[11] Cookie 設定時の Path
属性は、Cookie
が適用される URL の path 部分を前方一致で指定します。
[8] 属性値が空文字列か最初の文字が /
以外なら、既定パス (>>2)
を使わなければなりません >>7 (つまり属性値は無視されます)。
それ以外なら、属性値を使わなければなりません >>7。
[40] RFC 6265 によれば Path
属性の既定値は当該要求の URL
の path のディレクトリーまでの部分です。
[42] Path
属性があれば、最後の Path
属性を構文解析して得られた値をクッキーのパスとしなければなりません。
なければ、要求URLの既定パス (>>2) をクッキーのパスとしなければなりません。
>>44
[19] 百分率符号化、非ASCII文字や URI RFC 上で認められていない文字の扱いについては従来仕様上明記されていませんでしたが、 RFC 6265 により特別な扱いはしないと明確化されました。
[9] HTML5 の document.cookie
属性に関する節の注記 (参考)
には、次のような記述があります。
[20] この属性は Netscape Cookie で当初より規定されていました。
[13] Cookie が妥当であるか判断する際、 Domain
が一致すると判断されると次に Path
の比較が行われます。
要求しようとしている URL の path の部分の前方が Path
属性の値と一致していれば、 Path
属性は一致したものとみなされます。
>>12
[14] この一致を調べるに当たって path は不透明なものとして扱われます。つまり、
/
による階層の区切りは考慮されません。
Path
属性の値 /foo
は、
/foo/bar.html
だけではなく /foobar
にも一致します
>>12。
[17] http://foo.example
のように path がない (厳密に言えば path
が空文字列である) URL もありますが、HTTP 要求メッセージ上の Request-URI
は /
になります。これに一致する Path
は
/
です。/
はそのホストのすべての URL
に一致することになります。
[18] Path
属性の値が空文字列である時の扱いは明記されていません。
[21] 後に IETF で標準化された Set-Cookie:
(RFC 2109)、
Set-Cookie2:
(RFC 2965) でも Netscape と似たような定義となっています。
[28] RFC 2109 では、Path
が省略された場合、当該要求の path
の一番最後の /
の直前までが既定値とされていました >>25。
[29] RFC 2965 では、 Path
が省略された場合、当該要求の path
の一番最後の /
までが既定値とされていました >>26。
[34] RFC 2109、RFC 2965 では利用者エージェントが返送する時に
Cookie:
に $Path
属性として含めることになっていました。
[10] Javascriptのdocument.cookieのpath ( 版) http://www.synck.com/contents/technote/technote_1230518860.html
document.cookieで四苦八苦しておりまして、Safari、Firefox、Chromeではちゃんと動くのにIE6とIE7では動かないという事態に直面した際の話です。
端的に申しますとdocument.cookieのpathはIEに関してはフォルダ単位でしか動きません。 そのほかのモダンブラウザではちゃんと動きます。ほとほとIEには困ったものです。
なので、location.pathnameを直接pathに通すとcookieが書き込まれないという事態に陥る
Path
が省略された場合、Cookie が含まれる応答が帰ってきた要求の URL の path と同じとみなされます。 >>12