2009-12-18 145 views
5

我遇到了一個奇怪的問題,它正在正確發送和接收Cookie,但在Internet Explorer中無法訪問JavaScript。 Chrome,Firefox,Opera和Safari JavaScript很好。在請求Cookie中發送Cookie Cookie,但在IE中不存在JavaScript的document.cookie

  1. 郵政 「http://wp.abc.example.com/content/sv2.cgi?id=1234」,響應集餅乾,發出302重定向:

    HTTP/1.0 302 Moved Temporarily 
    Location: http://members.abc.example.com/abc/members/0912/07/news01.html 
    Set-Cookie: AID=1495763b4fc6d5f4290e2074ab1092f7; expires=Tue Feb 16 09:33:03 2010 GMT; path=/abc/members/0912/07/news01.html; domain=abc.example.com; ; 
    Set-Cookie: LEADENDDATE=20091218; expires=Tue Feb 16 09:33:03 2010 GMT; path=/abc/members/0912/07/news01.html; domain=abc.example.com; ; 
    
  2. 瀏覽器請求的目標頁面,包括剛纔發送的cookie。

    GET /abc/members/0912/07/news01.html HTTP/1.1 
    Cookie: AID=1495763b4fc6d5f4290e2074ab1092f7; LEADENDDATE=20091218; 
    Host: members.abc.example.com 
    
  3. 運行「javascript:alert(document.cookie);」在瀏覽器地址欄中。

  4. 在IE和IE瀏覽器上,cookies不在那裏。其他瀏覽器都很好。這是IE6,7真,和8

在總結

所以,

的 「wp.abc.example.com」 上 「abc.example.com」,這是設置一個cookie通過「members.abc.example.com」的請求發送到服務器,但該頁面上的JavaScript不可見。

爲什麼?

我想也許不是「abc.example.com」,應該在「.abc.example.com」上設置cookie以允許子域匹配,但即使如此,它也會在「members.abc.example」中發送。 com「請求標題。

基本上它充當雖然「的HttpOnly」被設置在該cookie,即使從上面所示的Set-Cookie頭例如,不包括該標記。額外的「;」也許會有一些影響?

回答

7

Eric Law寫了a good article on IE's various cookie-handling quirks回來。他回答的其中一個問題看起來好像適用於您的場景:

問題8:HTML DOM document.cookie屬性是否有任何限制?

答:[...]

此外,由於在基礎的WinINET InternetGetCookie實現一個不起眼的錯誤,IE的document.cookie中不會,如果它是用含有路徑屬性設置返回一個cookie文件名。
[...]

請注意,你的路包括文件名:

的Set-Cookie:AID = 1495763b4fc6d5f4290e2074ab1092f7;到期=星期二2月16日09:33:03 2010 GMT; path =/abc/members/0912/07/news01.html;域= abc.example.com; ;
Set-Cookie:LEADENDDATE = 20091218;到期=星期二2月16日09:33:03 2010 GMT; path =/abc/members/0912/07/news01.html;域= abc.example。COM; ;

我建議你嘗試了免費的文件名路徑設置中的cookie,看看是否有沒有幫助?

+0

謝謝!我們最終爲自己弄明白了這一點,但很高興看到它作爲已知錯誤的寫法。 MSDN在cookie處理細節上基本沒用。是否有任何有關此問題的Microsoft文檔,您知道嗎? – ryandenki 2009-12-24 04:01:26

+0

實際上,在我們的情況下,我們確實需要將Cookie作爲頁面特定的,而不僅僅是路徑。當然這只是一個可怕的解決方法,用於禁止在沒有我們公司網站的URL中使用查詢參數的奇怪策略: http://stackoverflow.com/questions/1956641/any-justification-for-a-policy-that-查詢參數 - 應該 - 不被使用的 – ryandenki 2009-12-24 04:17:53