2010-06-29 38 views
6

我發現Safari 5的這個問題(實際上它至少在4.0.5以前就很流行),它似乎沒有正確設置cookie。該網站適用於Firefox,IE和Chrome。Safari 5沒有將所有的cookies發送回服務器

但是,我可以通過查看Safari使用的cookie plist來驗證cookie是否正確設置。在Windows 7上它存儲在這裏:C:\ Users \\ AppData \ Roaming \ Apple Computer \ Safari \ Cookies \ Cookies.plist

現在我正在使用的網站使用的cookie非常廣泛,並存儲在不同的域中。

比方說,例如,該網站是www.foo.com。 登錄cookie設置爲域.foo.com。 此外,其他cookie存儲到域www.foo.com,a.foo.com,b.foo.com等

Safari瀏覽器似乎變得困惑時去www.foo.com和「忘記「發送它應該的所有cookies(www.foo.com,.foo.com)。

我不確定這是否是我身邊的錯誤(Cookie中的無效字符),或者這是否是Safari的錯誤。我想知道是否有人遇到此問題,並已發現

謝謝!

編輯:我關心的一個cookie非常大,有點小於4k的長度。它包含編碼的信息,它包含的字符是字母數字和/ + _ =

現在有什麼奇怪的是,根據cookie設置的域名,cookie本身工作正常。但是,當用戶登錄時,會添加另一個cookie,並且Safari似乎忽略了第一個。 Safari發送的登錄Cookie很好,它包含字母數字以及[] _ \

我最初的想法是它可能是域名衝突。第一個cookie被設置爲www.foo.com,而登錄cookie被設置爲.foo.com。但是,我測試了這個理論,將它們都設置爲.foo.com,問題依然存在。

+0

我遇到了無效字符在cookie中導致各種問題的問題。我一定會檢查一下。 – dmazzoni 2010-06-29 02:33:29

回答

11

看一看瀏覽器的大小限制here。 Safari 5的每個請求都有4kb的限制。因此,如果域(包括​​關聯的通配符域)的所有cookie的總大小超過4k,您將開始丟失cookie。 我相信這樣的邏輯是,最早的cookie將被首先犧牲,直到總cookie的頭部大小低於4k。

我們目前自己也遇到了這個問題,但也發現了另一種Cookie丟失的情況,儘管我們還不明白爲什麼會出現這種情況。

由於您的單個cookie的大小很大,因此以下請求可能會添加新的cookie,從而使總大小超過限制。

+2

這應該被標記爲答案。 – 2011-03-18 13:17:06

相關問題