2009-12-18 40 views
5
của IE JavaScript

Tôi gặp sự cố lạ với cookie đang được gửi và nhận đúng cách nhưng không thể truy cập được vào JavaScript trên Internet Explorer. Chrome, Firefox, Opera và Safari JavaScript là tốt.Cookie tên miền phụ được gửi theo yêu cầu Tiêu đề cookie, nhưng không xuất hiện trong tài liệu JavaScript.cookie

  1. Đăng lên "http://wp.abc.example.com/content/sv2.cgi?id=1234", phản ứng đặt cookie, vấn đề chuyển hướng 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. trình duyệt yêu cầu trang mục tiêu, bao gồm cả các tập tin cookie vừa gửi.

    GET /abc/members/0912/07/news01.html HTTP/1.1 
    Cookie: AID=1495763b4fc6d5f4290e2074ab1092f7; LEADENDDATE=20091218; 
    Host: members.abc.example.com 
    
  3. Chạy "javascript: alert (document.cookie);" trong thanh địa chỉ trình duyệt.

  4. Chỉ trên IE và IE, các cookie không có ở đó. Các trình duyệt khác là tốt. Điều này đúng cho IE6, 7 và 8.

Vì vậy, trong Tóm lại,

Các "wp.abc.example.com" đặt một cookie trên "abc.example.com", mà là được gửi tới máy chủ trong các yêu cầu về "members.abc.example.com", nhưng không hiển thị với JavaScript trên trang đó.

Tại sao?

Tôi nghĩ có thể thay vì "abc.example.com", cookie phải được đặt trên ".abc.example.com" để cho phép đối sánh tên miền phụ, nhưng ngay cả khi nó được gửi trong "members.abc.example. com "tiêu đề yêu cầu.

Về cơ bản nó hoạt động như thể "HttpOnly" được đặt trên cookie, mặc dù từ ví dụ tiêu đề Set-Cookie được hiển thị ở trên, lá cờ đó không được bao gồm. Có thêm ";" có thể có một số hiệu ứng?

Trả lời

7

Eric Law đã viết a good article on IE's various cookie-handling quirks một thời gian trở lại. Một trong những câu hỏi mà anh ấy trả lời xuất hiện như thể nó có thể áp dụng cho kịch bản của bạn:

Q8: Có giới hạn nào đối với tài sản HTML DOM document.cookie không?

A: [...]

Ngoài ra, do một lỗi mơ hồ trong tiềm ẩn thực hiện WinInet InternetGetCookie, document.cookie của IE sẽ không trở lại một cookie nếu nó đã được thiết lập với một thuộc tính con đường có chứa một tên tệp.
[...]

Lưu ý rằng đường dẫn của bạn làm bao gồm tên tập tin:

Set-Cookie: AID = 1495763b4fc6d5f4290e2074ab1092f7; hết hạn = Tue Feb 16 09:33:03 2010 GMT; đường dẫn =/abc/thành viên/0912/07/news01.html; domain = abc.example.com; ;
Đặt cookie: LEADENDDATE = 20091218; hết hạn = Tue Feb 16 09:33:03 2010 GMT; đường dẫn =/abc/thành viên/0912/07/news01.html; domain = abc.example.com; ;

tôi đề nghị bạn thử thiết lập các cookie với đường dẫn tên tập tin miễn phí, và xem nếu điều đó không giúp ...

+0

Cảm ơn! Chúng tôi cuối cùng đã tìm ra điều này cho chính mình, nhưng thật tuyệt khi thấy một ghi chú trên đó là một lỗi đã biết. MSDN về cơ bản là vô ích đối với các chi tiết chuyển cookie. Có bất kỳ tài liệu nào của Microsoft về vấn đề này mà bạn biết không? – ryandenki

+0

Thực tế trong trường hợp của chúng tôi, chúng tôi thực sự cần cookie cụ thể cho từng trang, không chỉ cho đường dẫn. Tất nhiên đó chỉ là một giải pháp khắc nghiệt cho một chính sách lạ cấm sử dụng tham số truy vấn trong URL mà không có trang web công ty của chúng tôi: http://stackoverflow.com/questions/1956641/any-justification-for-a-policy-that- truy vấn-tham số-nên-không-được-sử dụng – ryandenki

Các vấn đề liên quan