draft 05より、「Same-site Cookies」という仕様に改称され、SameSite属性として属性が定義されました。
http://tools.ietf.org/html/draft-west-first-party-cookies-05
(2016/01/28)
Googleの方による、CookieにFirst-Party-Only 属性を追加するという仕様が提案されていたので、簡単に目を通す。
大分理解が足りず間違い等あるかもしれません。
First-Party-Only Cookies(draft-west-first-party-cookies)
First-Party-Only 属性
First-Party-Only 属性は他の属性と同様にset-cookieヘッダで指定される。
Set-Cookie: SID=31d4d96e407aad42; First-Party-Only
これを受け取ったユーザエージェントは、First-Partyリクエスト時のみCookieを送信する。
First-Partyリクエストとは簡単に言うと、リクエストするリソースのオリジンとブラウザのアドレスバーのURLのオリジンが一致しているHTTPリクエストです。
もう少し正確に言うと
- "コンテキスト"はウィンドウ内のトップレベルブラウジングコンテキスとする
- "トップオリジン"は"コンテキスト"内の有効なdocumentのlocationのオリジンとする
- "リクエスト"のURLのオリジンが"トップオリジン"と同一であれば、それは*First-Partyリクエスト*とする。それ以外の"リクエスト"を*Third-Partyリクエスト*とする。
もちろん、First-Party-Only属性付きのSet-CookieはFirst-Partyリクエストに対するレスポンスの時のみ受け取り、それ以外の時は保存されない。
例
多分こんな感じ
- ブラウザで http://example.com/ にアクセスし(First-Partyリクエスト)、「First-Party-Only」属性のついたSet-Cookieヘッダを受け取る
- 次に別のサイト http://example2.com/にアクセスする。そこには<img src="http://example.com/hoge.jpg">のようなタグがあり、example.comにHTTPリクエストが送信される。
- この時のリクエストはThird-Partyリクエストになるので[1]で発行されたCookieは付加されない