2009-06-19 31 views
8

我的辦公室裏有一個位於防火牆後面的開發服務器。主機名是franklin。我們將所有的服務器命名爲科學家或發明家。內聯網域名Cookie

當我設置一個HTTP cookie:

Set-Cookie: user=kenny; expires=1245424860.11; Path=/; domain=franklin 

cookie不設置。我嘗試了以下,但沒有運氣。

.franklin 
.franklin.local 
franklin.local 
.franklin.localdomain 
franklin.localdomain 

我必須將主機名設置爲不同的東西,或者我可以通過一些我不知道的魔法來設置這個cookie嗎?

+0

奇怪的是,我放棄了域=富蘭克林,它設置了cookie。使用firefox的Web開發工具欄,它說域名是富蘭克林。不知道發生了什麼事。 – 2009-06-19 20:27:54

回答

7

RFC 2109說:

爲了避免可能的安全或隱私的侵犯,用戶代理 拒絕一個cookie(不存儲它的信息),如果任何 以下的爲真:

  • 「域」屬性的值不包含嵌入點或 不以點開頭。
  • 請求主機的值與域 屬性沒有域匹配。

而且也:

域默認爲請求主機。

如果你的主機是franklin

  • 餅乾domain=.franklin將被拒絕,因爲它沒有嵌入點。
  • domain=.franklin.local的Cookie將被拒絕,因爲它與您的服務器的實際主機名稱不匹配。

的解決方案是主機名重命名爲franklin.localfranklin.<tld>並相應地設置該cookie的domain屬性(domain=.franklin.<tld>)。或者(如您發現的那樣),不要指定domain,並讓用戶代理回退到請求主機。

+1

很好的解釋!感謝molf! – 2009-06-19 21:14:31

0

你是否從正確的域設置cookie?您應該通過http://franklin/訪問該網站,否則它將無法工作(請參閱:同源策略)。

+0

我可以訪問它作爲http:// franklin/ – 2009-06-19 20:27:23