Origin Cookiesとは

Origin Cookies

GoogleのMike West氏による、Cookieに対する拡張が提案されている。


draft-west-origin-cookies-01では、同一生成元ポリシーと同様なセキュリティポリシーCookieを扱えるように、Cookie(RFC6265)に"Origin"属性を追加し、HTTPヘッダに"Origin-Cookie"ヘッダを新しく定義する。


"Origin-Cookie"はセットされた時のオリジンと一致するオリジンに対してのみ提出される。


(間違いがあるかもしれません、ご注意下さい)

Origin Cookieは、set-cookieヘッダにOrigin属性をつけることでセットされる。

Set-Cookie: SID=31d4d96e407aad42; Secure; HttpOnly; Origin


コレを受け取ったユーザエージェントは、HTTPリクエストを送る際、受け取ったCookie情報をOrigin-Cookieにセットし送信する。Non-Origin Cookieは今までどおりCookieヘッダで送信する。
Origin-Cookieを使用することで、サーバ側はそうでないNon-Origin Cookieと簡単に区別することが出来ます。

Origin-Cookie: SID=31d4d96e407aad42
Cookie: lang=en-US

ユーザエージェントの動作

Cookie保存時の動作

Origin属性のついたSet-Cookieヘッダを受け取った場合、幾つかの属性を変更し保存する

  • domain 属性を空文字にセットする
  • host-only-flag をtrueにセットする
  • origin として"request-uri"のオリジンをセットする(RFC6454)
  • orifin-flag をtrueにセットする
Origin-Cookie ヘッダ送信時

origin-flagがtrueのCookieがOrigin-Cookieヘッダに含まれます。ただし、ユーザエージェントがHTTPリクエストを送信する際、2つ以上のOrigin-Cookieヘッダを付加してはいけません(MUST NOT)。

Origin-Cookieの値は以下のように生成しなければならない(MUST)

  • "cookie-list"は、"origin-flag"がtrueでかつ、cookieの"origin"と"request-uri"(RFC6454)がマッチしているリストとする
  • ユーザエージェントは"cookie-list"を、"creation-time"が早い順に並び替えるべきです(SHOULD)
  • cookieの"last-access-time"を現在の時間に更新する
  • "cookie-list"を"cookie-string"にシリアライズする。(「name=value; 」の繰り返し)