Web 服務器通過發送一個稱為?`Set-Cookie`?的 HTTP 消息頭來創建一個 cookie,`Set-Cookie`消息頭是一個字符串,其格式如下(中括號中的部分是可選的):
~~~
Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]
~~~
消息頭的第一部分,value 部分,通常是一個?`name=value`?格式的字符串。事實上,這種格式是原始規范中指定的格式,但是瀏覽器并不會對 cookie 值按照此格式來驗證。實際上,你可以指定一個不含等號的字符串,它同樣會被存儲。然而,最常用的使用方式是按照?`name=value`?格式來指定 cookie 的值(大多數接口只支持該格式)。
當存在一個 cookie,并允許設置可選項,該 cookie 的值會在隨后的每次請求中被發送至服務器,cookie 的值被存儲在名為 Cookie 的 HTTP 消息頭中,并且只包含了 cookie 的值,忽略全部設置選項。例如:
~~~
Cookie: value
~~~
通過?`Set-Cookie`?指定的可選項只會在瀏覽器端使用,而不會被發送至服務器端。發送至服務器的 cookie 的值與通過?`Set-Cookie`?指定的值完全一樣,不會有進一步的解析或轉碼操作。如果請求中包含多個 cookie,它們將會被分號和空格分開,例如:
~~~
Cookie: value1; value2; name1=value1
~~~
服務器端框架通常包含解析 cookie 的方法,可以通過編程的方式獲取 cookie 的值。