2010-05-21 73 views
8

一個HTTP Set-Cookie指令只能容納一個cookie,是不是?我的意思是,一對name=value對?是否可以使用單個Set-Cookie設置多個Cookie?

+0

既然你說的指令,我們是在談論htaccess什麼的? 如果是這樣,應該重新定義標籤。 使用JavaScript,你可以設置很多你喜歡的餅乾。 – 2010-05-21 06:47:02

回答

18

Netscape的原始Cookie規範(請參閱this cached version)沒有說明列出多個cookie聲明的任何內容。

但作爲的Set-CookieRFC 2109定義的允許以逗號分隔的cookie聲明的列表:

非正式地,在Set-Cookie響應報頭包括所述令牌設置Cookie:,接着是以逗號分隔的一個或多個Cookie的列表。每個Cookie都以NAME = VALUE對開頭,後跟零個或多個以分號分隔的屬性值對。

這同樣適用於的Set-COOKIE2RFC 2965所定義:

非正式地,在Set-COOKIE2響應報頭包括所述令牌SET-COOKIE2 :,後跟一個逗號分隔列表一個或多個餅乾。每個Cookie都以NAME = VALUE對開頭,後跟零個或多個以分號分隔的屬性值對。

但由於大多數用戶代理仍然跟隨網景公司的原始規範,我寧願建議剛剛宣佈每個Cookie都有自己的Set-Cookie頭字段。

這也是什麼最新RFC 6265反映:

產地服務器不應倍多的Set-Cookie頭字段爲 一個報頭字段。摺疊HTTP頭 字段(即[RFC2616]中定義的)的常見機制可能會更改Set-Cookie標頭字段的語義,因爲%x2C(「,」)字符由Set-Cookie在 中使用與這種摺疊衝突的方式。

+0

最後一個規範是RFC6265,它在單個Set-Cookie頭中沒有提及任何關於幾個cookie的內容,據我所見:http://www.rfc-editor.org/rfc/rfc6265.txt – neu242 2012-03-05 10:26:51

+0

I可以確認Google Chrome在嘗試發送多個Cookie時具有非常不尋常的解析功能,因此它絕對不可取。由於「,」字符作爲cookie分隔符確實使其基本上不可能解析,所以它很困惑我如何根據RFC 2109解析cookie。所以,簡單地說,你只是不解析它。 – 2015-12-03 23:06:42

相關問題