Session-Cookies und IE 8
Ich vor kurzem eine einfache web-app bereitgestellt, über Tomcat. Nutzt die app ziemlich standard-session-basierte Sicherheit, wo ein Benutzer angemeldet hat, erhält eine session.
Sitzungen funktionieren in Firefox und Chrome auf, jedoch erfordern die Verwendung von jsessionid in der URL für den IE (getestet 7 & 8), "Mittel" betreffen. Im IE 8, ich habe versucht, override cookie handling, Einstellung "Erlaube alle 3rd-party-cookies" und "alle Zulassen" session-cookies"- keine Würfel. Allerdings wenn ich Tomcat auf meinem lokalen Rechner, IE akzeptiert die Cookies, und sessions arbeiten einwandfrei.
Und jetzt für die HTTP-Header.
Aus Chrom, ein Benutzer eingeloggt ist, bekommt eine Sitzung
GET http://devl:8080/testing/HTTP/1.1
Host: devl:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
P3P: CP="NON CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT STA"
Set-Cookie: JSESSIONID=9280023BCE2046F32B13C89130CBC397; Path=/testing
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Content-Length: 2450
Date: Fri, 26 Mar 2010 14:14:40 GMT
GET http://devl:8080/testing/logout HTTP/1.1
Host: devl:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5
Referer: http://devl:8080/testing/
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=9280023BCE2046F32B13C89130CBC397
...
Vom IE 8, mit standard-medium-level-Sicherheit und Datenschutz-
GET http://devl:8080/testing/HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC; Tablet PC 2.0)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Host: devl:8080
Connection: Keep-Alive
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
P3P: CP="NON CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT STA"
Set-Cookie: JSESSIONID=192999F922D6E9C868314452726764BA; Path=/testing
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Content-Length: 2450
Date: Fri, 26 Mar 2010 14:32:34 GMT
GET http://devl:8080/testing/logout HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://devl:8080/testing/;jsessionid=6371A83EFE39A46997544F9146AA5CEA
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC; Tablet PC 2.0)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: devl:8080
...
Ich dachte, es könnte sein, P3P, aber auf eine kompakte Richtlinie das hinzufügen, ändert sich nichts. Dies ist der standard-Tomcat-session, so dass ich bin wirklich überrascht, dass ich nicht in der Lage gewesen zu finden, anderen Menschen mit dem gleichen problem so weit. Jemand irgendwelche Ideen?
BEARBEITEN 4/3/2010 -
Sorry wenn ich nicht klar machen - ich habe versucht aus mehreren anderen Instanzen des IE - co-Arbeiter auf dem Flur, etc.
BEARBEITEN 4/3/2010 -
Ich habe auch versucht einschalten der Aufforderung für alle cookies, aber ich nicht bekommen, eine Eingabeaufforderung. Einstellung der Domäne, in der "Set-Cookie" - header mit Fiddler nicht einen Unterschied machen, entweder.
- Könnte das cookie benötigen die domain gesetzt? Ich weiß nicht, einen Weg zu konfigurieren, die in Tomcat, aber vielleicht konnte ich dich mit den cookie-header mit einem filter...
- Warum wird der referer in Ihrem letzten IE8
GET
gehören die jsessionid in der url? Und welches tool verwenden Sie zur Erfassung der oben genannten Verkehr (cuz ein browser würde nie sendenGET http://...
)? - Eine andere Sache, bemerkte ich aus dem IE8 HTTP-trace: bei der ersten Anfrage versucht, eine session-id "" Set-Cookie: JSESSIONID=192999F922D6E9C868314452726764BA; Path=/testing ", aber die zweite Anforderung hat eine andere session-id in der "Referer: ...;jsessionid=6371A83EFE39A46997544F9146AA5CEA". Gab es dazwischen Aktionen zwischen den 2 Anfragen? Gibt es irgendwelche zusätzliche Informationen auf, warum es sein könnte, zwei session-ids? Keine chance, es gibt mehrere windows invovled?
- Ich vermute, es ist wie Tomcat Griffe-sessions, wenn cookies deaktiviert sind; ich Tue nichts wonky ich glaube nicht, dass... - die einzige Zeit, die ich erstellen Sie eine neue Sitzung, wenn der client nicht über eine.
- Tomcat fällt zurück auf " akzeptieren ";JSESSIONID=..." angehängt, um die URL zu verbreiten, session-Daten, wenn cookies deaktiviert sind. Ist das nicht etwas komisch IE-Macke (obwohl, es würde nicht passieren, wenn der IE akzeptiert meine cookies)- wenn ein session-cookie ist nicht im Lieferumfang enthalten, die JSP-Seiten enthalten die id in den nachfolgenden URLs.
- Gibt es irgendwelche Erweiterungen geladen im IE? Pflege, um zu versuchen, es mit Erweiterungen deaktiviert? Jede chance, zu versuchen, von IE auf einen anderen computer (z.B. PC eines Freundes)?
- Wir hatten ein ähnliches problem, aber es war nicht spezifisch für den IE (und ich kam auf diese Frage in der Suche nach einer Lösung). Es stellte sich heraus, schmerzhaft einfach: ein slash am Ende der URL. Wir waren zum Beispiel Zugriff auf http://.../app die scheitern würden, aber http://.../app/ gearbeitet (auch wenn dies nicht erkennbar war, zu der Zeit). Der Unterschied war, dass die
Set-Cookie
header zeigte der Pfad war /app/ was bedeutete, dass der Zugriff auf /app bewirkt, dass der cookie nicht gesendet werden, durch den browser (zu Recht). Dies kann nicht Ihr problem zu sein und es scheint, dass Ihre cookie-Pfad /testen, sollte aber funktionieren mit /testing/.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lief ich in genau dieses problem, gegraben, um für eine Weile, und fand diese:
http://forums.iis.net/p/1147938/1879164.aspx
welche sagt, dass domain-Namen sind Unterstriche in Ihnen zu Problemen mit Windows Server, tomcat und IE
nicht sicher, ob dies Ihr problem behebt (und an diesem Punkt, haben Sie wahrscheinlich don ' T care), aber vielleicht die nächste person, die kommt zusammen gewinnen können, einen Wert von es.
Problem: der IE8 verweigert dieser die Annahme von cookies auf einer Seite, die ich gebaut hatte, aber Firefox und IE7 hat Prima funktioniert und das getan hatte, für das Alter - dies war stabil-code.
Lösung (für mich): Mein server ist in einer anderen Zeitzone auf dem client-Rechner. Das DUMME, IDIOTISCHE IE8 versucht, clever zu sein und weigert sich zu akzeptieren cookies (gespeichert in der lokalen client-Maschine) mit einem 20-minütigen Leben. Mein PHP code wurde direkt aus dem Buch, also:
Aber es funktioniert gut, wenn ich es zu ändern, zum Beispiel -
Diese noch immer lässt mich mit dem problem, dass das cookie sterben nach 20 Minuten, aber zumindest mein können Benutzer jetzt meine website mit IE8. Ich pass auf, diese Informationen in Fall kann es helfen, jemand anderes.
Haben Sie überprüft, dass die server Zeit ist korrekt?
Ich habe ähnliche Probleme vor kurzem mit dem IE keine cookies akzeptieren, richtig. Nach viel Kopf kratzen, es stellte sich heraus zu sein, weil die Zeitdifferenz zwischen der server-und client-Maschinen war so groß, dass IE weigerte sich zu akzeptieren. Dies wurde in der Apache jedoch.
Verwenden Sie die standard-HTTP-port (80). Ich habe gelesen über Probleme mit port-Nummern in URLs in Bezug auf Datenschutz/- Sicherheit im IE mehr als einmal, aber kann nicht scheinen, um herauszufinden, die relevanten links zu diesem Zeitpunkt.
Ich Stimme mit Lexicore - die cookie-Protokoll vom web-server sieht richtig aus, also hat es etwas mit dem IE. Es wäre einfacher, um herauszufinden, wie das Problem zu beheben, wenn wir verstehen besser, warum der IE ist die Ablehnung der Cookies. Alternativ bitten Sie einen Freund, Sie zu schlagen, die Website für Sie im IE zu helfen, bestätigen Ihre ein server-Problem, nicht eine browser-Instanz Problem.
Hier einige Dinge zu überprüfen, um zu Debuggen, die mit dem IE und cookies - leider, es ist ein Durcheinander von Optionen zu prüfen. Sorry, wenn einige dieser Elemente scheinen basic - ich weiß nur nicht wnat zu machen keine Annahmen. Ich bin zusammen im IE 8.0 für diese.
Erste, durchsuchen Sie die Ziel-site (http://devl:8080/testing/) im IE. Dann:
Bestätigen, was zone IE klassifiziert 'http://devl:8080/testing/'. (Dies könnte erklären, warum seine Werke mit Tomcat auf Ihrem lokalen Rechner.) Die zone angezeigt, in der unteren Leiste des Browsers und ist es sehr wahrscheinlich, sagt "Internet". Wenn er statt dessen sagt: "Lokales intranet", "Vertrauenswürdige Sites" oder "Eingeschränkte Site", kann dies ein Teil des Problems und aktualisieren Sie Ihre Frage oder herauszufinden, warum es nicht klassifiziert als Internet.
Doppelklicken Sie auf die zone-Anzeige in der unteren Leiste (vermutlich "Internet") öffnen Sie den dialog Sicherheit. Ist die Sicherheitsstufe für Internet auf Mittel-hoch? Wenn nicht, könnte dies Teil des Problems, und sollten Sie vielleicht setzen Sie es zurück, um das Spiel Ihrer Nutzer.
Wählen Sie die zone "Internet" und klicken Sie dann auf "Custom level ..." - Taste, um öffnen Sie das Dialogfeld Sicherheitseinstellungen. Bestätigen Sie die "Dauerhaftigkeit" option auf "Aktivieren". Die "Dauerhaftigkeit" - option im unteren 1/4 der Liste der Optionen in der "Miscenllaneous" - Abschnitt (in der Nähe der Unterseite der Abschnitt direkt über dem nächsten Abschnitt "Scripting").
Klicken Sie auf OK, auf jeden dialog zu schließen beiden.
Auf der Menüleiste (aktivieren, falls er nicht aktiviert ist), klicken Sie auf "Extras" > "Internetoptionen". Wählen Sie die Registerkarte "Datenschutz". Ich weiß, Sie haben erwähnt, Sie haben versucht, einige Sachen hier, aber diese änderungen können nicht auf Ihre Website, wenn Ihre Website ist nicht in der zone Internet oder, wenn Sie Ihre Website in die "Datenschutzaktionen Pro Site" Ausnahme-Liste, so dass Ihr am besten nur bestätigen.
Ist die Privatsphäre-Einstellung in der Registerkarte Datenschutz auf "Mittel" eingestellt? Wenn nicht, möchten Sie möglicherweise auf die Standardeinstellungen zurückgesetzt.
Klicken Sie auf die Schaltfläche "Sites" zu öffnen, die Datenschutzaktionen Pro Site dialog. Ist Ihre dev1 Website aufgeführt? Wenn ja, entfernen Sie es. Klicken Sie auf OK, um das Dialogfeld zu schließen. Alternativ könnten Sie auch zwingen, Ihren dev1 site immer cookies Erlauben.
Klicken Sie auf die Schaltfläche "Erweitert". Ist "automatische Cookiebehandlung aufheben aktiviert? Wenn ja, möchten Sie vielleicht, um Sie zu deaktivieren, um das Spiel Ihrer Nutzer. Alternativ versuchen Sie es und überprüfen Sie "Always allow session cookies".
Klicken Sie auf OK, auf jeden dialog zu schließen beiden.
Bestätigen, der browser ist noch bei target site ('http://devl:8080/testing/'). Klicken Sie auf "Ansicht" > "Datenschutzrichtlinie der Webseite...", um die Datenschutz-Bericht-dialog. Nicht der Liste enthalten "http://dev1:8080/testing/"? Funktioniert die Cookie-Spalte den Hinweis "Akzeptiert" für "http://dev1:8080/testing/"?
Wählen Sie "http://dev1:8080/testing/" aus der Liste. Klicken Sie auf Zusammenfassung, um finden Sie in der Datenschutzerklärung. Wenn ein Satz für Ihre Website, sollten Sie es hier sehen. Ansonsten, sollten Sie eine Nachricht erhalten, dass eine Datenschutzerklärung war nicht zu finden. Blick auf den unteren Rand des Dialogfelds, um zu sehen, wie die Seite eingestellt ist, um cookies zu verwenden (vergleichen, immer zulassen oder nie zulassen).
Hoffe das hilft dir weiter oder gibt Ihnen ein paar Ideen zu verfolgen.
Ref:
In diesem forum über P3P relevant zu sein scheint.
Haben auch Sie als Einstellung für Ihre domain und das Ablaufdatum für das session-cookie?
Dies hat sicher nichts mit Tomcat, da das cookie gesetzt wurde einfach nicht akzeptiert, DH. Dies muss Sicherheitsproblem im IE dann.
Vielleicht dieser MS-Artikel helfen würde, um es zu optimieren.
Was security-zone ist die dev1-site Teil? IE mit cookies umgeht und viele andere Sicherheit unterschiedlich, je nachdem, welche zone (und wie die zone konfiguriert ist).
Versuchen Sie, die dev1 Website explizit Teil der Vertrauenswürdigen Websites, zum Beispiel, und sehen, was passiert.
Zonen:
Ebenfalls funktioniert das cookie eingeschränkt werden müssen, um das /die Prüfung Weg? Versuchen Sie, diese für /und sehen, ob das einen Unterschied macht.
Ich würde versuchen, mit dem vollständig qualifizierten Hostnamen des Servers ein. MSIE behandelt hostname ohne Domänen, die als "Lokales intranet" und für die Sicherheit anders.
Speziell statt:
Versuchen Sie es mit etwas wie:
Es scheint, von dem, was du sagst, du hast nur gesehen, dass dieses Problem im IE und nur unter Verwendung der Computer in Ihrem Büro. Gibt es eine Art "security suite" installiert, indem ES auf alle Computer im Büro, und wenn ja, können Sie es vorübergehend deaktivieren? Häufig sind diese Arten von Anwendungen, die Haken in den IE und muck mit seinen HTTP-stack. Falls Sie bereits die software so installiert, Sie haben eine "saubere" installation oder nicht-Unternehmen-computer können Sie auch den test?