2009-12-18 12 views
5

Ich habe ein seltsames Problem mit Cookies, die richtig gesendet und empfangen werden, aber auf JavaScript auf Internet Explorer nicht zugreifen können. Chrome, Firefox, Opera und Safari JavaScript ist in Ordnung.Subdomain-Cookie gesendet in Anfrage Cookie-Header, aber nicht in IE JavaScript document.cookie

  1. Beitrag zu "http://wp.abc.example.com/content/sv2.cgi?id=1234", Antwort setzt Cookies, gibt 302-Umleitung:

    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. Browser fordert Zielseite, einschließlich der Cookies nur gesendet.

    GET /abc/members/0912/07/news01.html HTTP/1.1 
    Cookie: AID=1495763b4fc6d5f4290e2074ab1092f7; LEADENDDATE=20091218; 
    Host: members.abc.example.com 
    
  3. Ausführen "javascript: alert (document.cookie);" in der Browser-Adressleiste.

  4. Auf IE, und nur IE, sind die Cookies nicht da. Andere Browser sind in Ordnung. Dies gilt für IE6, 7 und 8.

Also zusammenfassend

Die "wp.abc.example.com" setzt ein Cookie auf "abc.example.com", das ist gesendet an den Server in Anfragen auf "members.abc.example.com", aber nicht sichtbar für JavaScript auf dieser Seite.

Warum?

Ich dachte, vielleicht anstelle von "abc.example.com" sollte der Cookie auf ".abc.example.com" gesetzt werden, um das Subdomain-Matching zu erlauben, aber trotzdem wird es im "members.abc.example" gesendet. com "Anfrage Kopfzeile.

Grundsätzlich verhält es sich so, als ob "HttpOnly" auf dem Cookie gesetzt ist, obwohl dieses Flag aus dem oben gezeigten Set-Cookie-Header-Beispiel nicht enthalten ist. Ist das extra ";" vielleicht einen Effekt haben?

Antwort

7

Eric Law schrieb a good article on IE's various cookie-handling quirks eine Weile zurück. Eine der Fragen, die er beantwortet, scheint sich auf Ihr Szenario zu beziehen:

Q8: Gibt es irgendwelche Grenzen für die Eigenschaft document.cookie von HTML DOM?

A: [...]

Auch aufgrund eines obskuren Fehler in den zugrunde liegenden WinINET InternetGetCookie Implementierung IE document.cookie wird keinen Cookie zurück, wenn es mit einem Pfad Attribut enthält eine gesetzt wurde Dateiname.
[...]

Beachten Sie, dass Ihre Wege tun umfassen Dateinamen:

Set-Cookie: AID = 1495763b4fc6d5f4290e2074ab1092f7; abläuft = Di 16 Feb 09:33:03 2010 GMT; path =/abc/Mitglieder/0912/07/news01.html; Domäne = abc.example.com; ;
Set-Cookie: LEADENDDATE = 20091218; abläuft = Di 16 Feb 09:33:03 2010 GMT; path =/abc/Mitglieder/0912/07/news01.html; Domäne = abc.beispiel.com; ;

Ich schlage vor, Sie versuchen, die Cookies mit Dateinamen freien Wegen Einstellung, und sehen, ob das nicht ...

+0

Dank hilft! Wir haben das schließlich selbst herausgefunden, aber es ist schön, eine Beschreibung als bekannten Bug zu sehen. MSDN ist im Grunde nutzlos auf Cookie-Übergabe Details. Gibt es Microsoft-Dokumentation zu diesem Problem, von dem Sie wissen? – ryandenki

+0

In unserem Fall brauchen wir wirklich Cookies, um seitenspezifisch zu sein, nicht nur für den Pfad. Natürlich ist das nur ein schrecklicher Workaround für eine seltsame Richtlinie, die die Verwendung von Abfrageparametern in URLs ohne unsere Firmenwebseiten verbietet: http://StackOverflow.com/Questions/1956641/irgendeine-Justifikation-für-eine-policy-that- Abfrageparameter - sollte nicht verwendet werden – ryandenki

Verwandte Themen