Path

Path 属性 (Cookie)

[11] Cookie 設定時の Path 属性は、Cookie が適用される URLpath 部分を前方一致で指定します。

目次

  1. 仕様書
  2. 意味
  3. 構文
  4. 構文解析
  5. 既定値
  6. 処理モデル
  7. セキュリティーに関して
  8. 歴史
    1. IETF Cookie
  9. 関連
  10. メモ

仕様書#

意味#

[38] Path 属性クッキーが適用される範囲となる path を指定します >>37

[39] Path 属性が省略された場合、要求URLディレクトリー部分が既定値として使われます >>37

構文#

[36] RFC 6265 における Path 属性の定義 >>35, >>43
 path-av           = "Path=" path-value
 path-value        = *<any CHAR except CTLs or ";">

構文解析#

[8] 属性値空文字列か最初の文字/ 以外なら、既定パス (>>2) を使わなければなりません >>7 (つまり属性値は無視されます)。 それ以外なら、属性値を使わなければなりません >>7

既定値#

[40] RFC 6265 によれば Path 属性の既定値は当該要求URLpathディレクトリーまでの部分です。

[15] Netscape の仕様では、 Path が省略された場合、Cookie が含まれる応答が帰ってきた要求URLpath と同じとみなされます。 >>12

[2] クッキー既定パス (default-path) は、次のようにして決定します >>1

  1. [3] 要求URLパスがあればその値、なければ空文字列とします。
  2. [4] 空文字列か最初の文字/ないなら、 / を返してここで終わります。
  3. [5] / が1つしかないなら、 / を返してここで終わります。
  4. [6] 最右/ の直前までの文字列を返します。

処理モデル#

[42] Path 属性があれば、最後の Path 属性を構文解析して得られた値をクッキーパスとしなければなりません。 なければ、要求URLの既定パス (>>2) をクッキーパスとしなければなりません>>44

[19] 百分率符号化非ASCII文字URI RFC 上で認められていない文字の扱いについては従来仕様上明記されていませんでしたが、 RFC 6265 により特別な扱いはしないと明確化されました。

セキュリティーに関して#

[9] HTML5document.cookie 属性に関する節の注記 (参考) には、次のような記述があります。

歴史#

[20] この属性Netscape Cookie で当初より規定されていました。

[13] Cookie妥当であるか判断する際、 Domain一致すると判断されると次に Path の比較が行われます。 要求しようとしている URLpath の部分の前方が Path 属性の値と一致していれば、 Path 属性は一致したものとみなされます。 >>12

[14] この一致を調べるに当たって path は不透明なものとして扱われます。つまり、 / による階層の区切りは考慮されません。 Path 属性の値 /foo は、 /foo/bar.html だけではなく /foobar にも一致します >>12

[16] 百分率符号化の扱いは仕様上明記されていません。

[17] http://foo.example のように path がない (厳密に言えば path空文字列である) URL もありますが、HTTP 要求メッセージ上の Request-URI/ になります。これに一致する Path/ です。/ はそのホストのすべての URL に一致することになります。

[18] Path 属性の値が空文字列である時の扱いは明記されていません。

関連#

[34] RFC 2109RFC 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が書き込まれないという事態に陥る

[45] Classic Load Balancer のスティッキーセッションの設定 - Elastic Load Balancing (, ) https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/classic/elb-sticky-sessions.html

Elastic Load Balancing の URI はアンダースコア文字を %5F とエンコードします。Internet Explorer 7 などの一部のブラウザーでは、アンダースコアが %5F として URI エンコードされることが求められるためです。