2010-04-02 104 views
4

當一個頁面包含第三方javascript(通過<script src=...)並且該javascript設置了一個cookie時,該cookie「變成」第一方cookie,儘管它最初由第三方源設置。禁用第三方cookie是否也禁用由第三方javascript創建的cookie?

我的問題是這樣的。如果有人在瀏覽器中禁用了第三方cookie,那麼這是否也適用於由第三方javascript設置的Cookie?或者它是否只阻止在向第三方域的請求的頭文件中明確設置的cookie?

無論哪種方式,所有的瀏覽器都以完全相同的方式處理這個問題,或者做一些塊JavaScript的cookie,但其他人允許它?

回答

5

我只是覺得我會在進一步測試後更新這個,以防以後任何人遇到它。

我測試過Firefox 3.6,MSIE 7,Safari 4,Chrome 4和Opera 10,他們都支持通過第三方javascript創建cookie,即使第三方cookie被禁用也是如此。我得出這樣的結論是因爲cookie是爲第一方域創建的,因此瀏覽器將它們視爲第一方cookie,即使它們是由第三方源腳本創建的。

這只是由第三方請求頭創建的cookie在啓用此功能時會被拒絕。

0

我相信大多數瀏覽器都不會區分HTTP標頭中設置的域的cookie與javascript設置的域,而是通過用戶偏好來啓用/禁用它們。當然可以是例外 - 沒有任何技術上的原因阻止某人擴展瀏覽器,使其根據Cookie產生的確切位置對cookies有不同的規則 - 但我不知道任何。

編輯:我想我最初誤解了你的問題 - 我以爲你問了通過HTTP標頭和cookie設置通過JavaScript設置Cookie之間的區別。相反,您問的是,由不同域託管的JavaScript設置的cookie是否被認爲是第三方cookie,而不是由JavaScript在頁面中直接內聯或託管在相同域中設置的cookie?如果是這種情況,我相信答案是否定的(也就是說,它們被視爲第一方cookie)。無論js文件託管的原始域如何,它都會在包含它的網頁上下文中執行,因此它被視爲第一方。

+0

我使用Firefox進行的有限測試顯示,即使關閉了該功能,由第三方javascript創建的cookie仍然可以正常工作......但測試所有瀏覽器有點痛苦,所以我想我會問有沒有人想知道類似思想和更徹底的測試。 – Sean 2010-04-02 02:52:08

+0

不,你原來的理解是正確的 - 我試圖弄清楚通過http標頭的cookie是否與通過javascript設置的不同,即使它們來自「相同的第三方域」。 – Sean 2010-04-02 05:54:19