Cookie の設定

ウェブサイトで複数のページ間で共通に使えるデータストア管理機構として、 多くのウェブサイト構築環境では "セッション" などと呼ばれる仕組みがあります。

Google App Engine ではビルトインのセッション管理機構がありません。

このため必要に応じて実装する必要があります。

もちろん、どこからかライブラリを拝借してきても良いのでしょうが。

ここでは多くのセッション管理の基本となるクッキー (Cookie) の設定法方を説明します。

Cookie の設定

webapp では Python の SimpleCookie を利用して次のように Cookie が設定できます。

import Cookie
...
  def post(self):        
    # クッキーの設定
    c = Cookie.SimpleCookie()
    c["foo"] = user_key
    c["foo"]["path"] = "/"
    c["foo"]["secure"] = True
    c["foo"]["max-age"] = 60 * 60 # seconds
    self.response.headers.add_header("Set-Cookie",
      c.output(header=''))

ここでは Cookie のキー・値ペア以外に、path、secure、max-age 属性を設定しています。それぞれ簡単に説明すると次の通りです。

path はクッキーの有効範囲を指定します。/ を指定すると Cookie を指定したドメインで Cookie が有効になります。逆に /bar などと指定すると、 そのサブディレクトリ以下に有効範囲が限定されます。

secure 属性を設定すると、そのクッキーは HTTPS 通信時にのみ限定されます。例えば https://www.example.com/ で設定したクッキーがあったとして、 もし secure 属性が設定されていないと http://www.example.com/ へのアクセス時にもクッキーが送られてしまいます。

max-age は Cookie の有効時間を秒単位で設定しています。