[4] [[Cookie]] ははじめに [[Netscape Navigator]] で実装され、開発者向けに仕様案が公開されました。
[[Cookie]] は後に [[IETF]] で標準化されて [[RFC]] となっていましたが [[Netscape]]
の仕様と互換性が無いためほとんど無視され、長らく [[Netscape]] の公開した仕様書 (と実装)
が事実上の標準になっていました。 2011年になってようやく [[Netscape]] の仕様ベースの [[Cookie]]
の定義 [[RFC 6265]] が発行されています。

* 仕様書

- [1] [CITE[Client Side State - HTTP Cookies]]
<http://web.archive.org/web/19961125090609/http://www2.netscape.com/newsref/std/cookie_spec.html>

[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 = <Wdy, DD-Mon-YYYY HH:MM:SS GMT>
 abs_path = <RFC 2616 abs_path>
 
 cookie-char = <a sequence of characters excluding semi-colon, 
                comma and white space>
]PRE]

* 鯖からクライアントへの Cookie の設定

[5] [[Cookie]] を新規または上書きで設定、あるいは削除するには [CODE(HTTP)@en[[[Set-Cookie:]]]]
[[応答頭欄]]を使います。

[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]]]] [[属性]]

* クライアントから鯖への Cookie の通知

[8] 
- [CODE(HTTP)@en[[[Cookie:]]]] [[頭欄]]
- [[Cookieのサイズ制限]]

*例

[6] 
-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] 
日本語訳 <http://www.futomi.com/lecture/cookie/specification.html>

他にも訳があったけど Not found。
