2010-10-12 103 views
2

我的腳本設置10個cookies和瀏覽器成功保存他們,但document.cookie只檢索9雙,缺少的是對如下:的JavaScript的document.cookie缺少一些對

auth:4ae9Mq1j6tjt7dV6kV6A0piHB6NnNjijBmecax9mA8cfDpSs6pnAcD7H1%2FUqWMIIB%2BbgtKIJ2w1L2GnXkgV2 

發生了什麼? document.cookie中有字符限制嗎? Cookie域與所有其他域相同。

回答

0

我有兩個澄清的問題:

  1. 爲什麼你認爲你的「瀏覽器保存成功」所有的餅乾屑,如果最終屑似乎沒有被存儲在了document.cookie?
  2. 缺少的值是您最後嘗試添加的值嗎?如果是這樣,根據您提供的信息,我認爲該值太長而無法存儲在Cookie中。

Cookie crumb字符串的大小取決於您的編碼。

你可以閱讀更多關於每個域here允許的最大餅乾大小和數量。您可以閱讀關於如果超出了不同瀏覽器的限制here會發生什麼的較舊討論。這些限制因瀏覽器而異。

RFC 2109指出瀏覽器應該支持至少4096字節的cookie大小,至少300個總cookie以及每個域或唯一主機至少20個cookie。 This article顯示了2009年以來的cookie大小測試。This 2008 blog post注意到有關單個瀏覽器如何處理cookie的更多項目。

注意IE 7 and later每個域的cookie的數量限制爲50,而早期版本的IE瀏覽器的有20個域名的限制。

RFC 2109和衆多的在線參考建議,大約4096字節的最大尺寸是一個很好的一般假設堅持。如果你不能保持低於這個限制,你可能需要以某種方式將你的數據存儲在服務器上。

如果不是cookie的大小是這樣的問題,更多的信息上究竟如何你存儲和檢索你的cookie值將幫助小組解決您的問題。

+0

沒有意識到,這個線程是如此陳舊,當我回答了。無論如何,我希望這個答案有助於某人。 – hotshot309 2011-07-09 15:41:27

5

的問題是,在服務器端與發送的HttpOnly餅乾設置如下所述:發送這樣http://en.wikipedia.org/w/index.php?title=HTTP_cookie#HttpOnly_cookie

Cookie不是直通的document.cookie訪問。這通常用於幫助保護cookie值免受您網站上可能發生的XSS攻擊。

你沒有提到你正在使用服務器端的哪種技術來設置的cookie。如果你正在使用PHP,這個鏈接列出了可能的途徑中HTTPOnly標誌可以設置:

https://www.owasp.org/index.php/HttpOnly#Using_PHP_to_set_HttpOnly