[4] [[Cookie]] ははじめに [[Netscape Navigator]] で実装され、開発者向けに仕様案が公開されました。 [[Cookie]] は後に [[IETF]] で標準化されて [[RFC]] となっていましたが [[Netscape]] の仕様と互換性が無いためほとんど無視され、[[Netscape]] の公開した仕様書 (と実装) が事実上の標準になっています。 * 仕様書 - [1] [CITE[Client Side State - HTTP Cookies]] [2] >Preliminary Specification - Use with caution [INS[(予備仕様—心して使うべし)]] と書かれていましたが、この仕様が現在まで事実上の標準となっています。 *BNF ;; Netscape の仕様を元に作成 [PRE(ABNF code)[ http-response /= Set-Cookie http-request /= Cookie Set-Cookie = "Set-Cookie:" set-cookie-content set-cookie-content = [FWS] cookie-pair *([FWS] ";" [FWS] parameter) [FWS] [";"] [FWS] Cookie = "Cookie:" [FWS] cookie-pair *([FWS] ";" [FWS] cookie-pair) [FWS] parameter = expires-parameter / domain-parameter / path-parameter / secure-parameter cookie-pair = name "=" value expires-parameter = "expires=" cookie-date domain-parameter = "domain=" ["."] dot-atom path-parameter = "path=" abs_path secure-parameter = "secure" name = 1*cookie-char value = *cookie-char cookie-date = abs_path = cookie-char = ]PRE] * Cookie の設定 [5] [[Cookie]] を新規または上書きで設定、あるいは削除するには [CODE(HTTP)@en[[[Set-Cookie:]]]] [[応答頭欄]]を使います。 [6] 1つの応答頭に複数あっても良い。 (てことは読点区切り連結に出来るんだろうか?) [7] - [CODE(HTTP)@en[[[Set-Cookie:]]]] [[頭欄]] -- [CODE@en[[VAR[NAME]]=[VAR[VALUE]]]] -- [CODE(HTTP)@en[[[Expires]]]] [[属性]] -- [CODE(HTTP)@en[[[Domain]]]] [[属性]] -- [CODE(HTTP)@en[[[Path]]]] [[属性]] -- [CODE(HTTP)@en[[[Secure]]]] [[属性]] *例 [8] -Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT -Cookie: CUSTOMER=WILE_E_COYOTE -Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/ -Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001 ;; 以上の例は Netscape の仕様から。日付の年は実際には4桁じゃないと いけないらしい。 * メモ [3] 日本語訳 他にも訳があったけど Not found。