Wir haben eine Website (www.example.com), die Benutzer zu einer Reihe von Seiten Dritter weiterleitet, um die Zahlungsdetails zu überprüfen, was wir in einem Iframe tun. Zunächst wird eine lokale Seite von www.example.com in den Iframe geladen und der Benutzer wird zur URL eines Drittanbieters umgeleitet. Sobald die Schritte von Drittanbietern vom Benutzer ausgeführt wurden, werden sie auf eine Seite auf unserer Website (www.example.com) innerhalb des Iframes zurückgeleitet.
Dies funktioniert in allen von uns getesteten Browsern mit Ausnahme von IE 11, in dem unsere Cookies verloren zu gehen scheinen. Wir haben dies sowohl unter Windows 7 als auch unter 8.1 sowohl im Desktop- als auch im "Metro" -Modus überprüft, und das Problem betrifft alle Versionen.
Wenn ein Benutzer unsere Website durchsucht, setzen wir ein Sitzungscookie, das korrekt an die Erstanbieter-Seite gesendet wird, die ursprünglich in den Iframe geladen wurde. Sobald der Benutzer jedoch einige Seiten von Drittanbietern in diesem Iframe durchgesehen hat, wird das Sitzungscookie nicht mit der nächsten Anforderung gesendet.
Wenn wir die Datenschutzeinstellung von IE 11 auf den niedrigsten Wert setzen, verschwindet dieses Problem und die Dinge funktionieren wie erwartet.
Alle möglichen Lösungen, die ich bisher gefunden habe, beziehen sich auf P3P-Header. Wir haben einen gültigen und korrekten P3P-Header und eine XML-Richtliniendatei eingerichtet, und dieses Problem tritt nur in IE 11 auf.
Update: Wir haben einige andere Cookies mit JS gesetzt. Diese bleiben alle wie erwartet bestehen. Die Unterschiede sind das Ablaufdatum (1 Jahr für JS-Cookies, 1 Monat für Sitzungscookies), die Domain (explizit "example.com" für JS-Cookies, leer für Sitzungscookies) und ob sie "nur HTTP" sind (falsch für JS Cookies, zutreffend für Sitzungscookies).
Ich habe versucht, alle diese Optionen gemäß den JS-Cookies für das Sitzungscookie festzulegen, aber es machte keinen Unterschied.
Update 2: Nach weiteren Tests konnte ich keinen Testfall erstellen, der dieses Problem neu erstellt. Alle zusätzlichen Cookies, mit denen ich im Live-Code zu testen versuche, scheinen jedoch ebenfalls fehlerhaft zu sein, selbst wenn sie mit genau demselben Code wie die funktionierenden JS-Cookies gesetzt sind. Zusamenfassend; Ich habe noch kein Muster für die Cookies gefunden, die funktionieren und für diejenigen, die nicht funktionieren.
Eine potenziell interessante Sache ist, dass die Cookies nicht gelöscht werden, sondern nur nicht an die endgültige Anfrage gesendet werden. Wenn eine andere Seite geladen wird, werden die Cookies auf magische Weise wieder angezeigt und gesendet. was mich glauben lässt, dass dies ein Fehler ist, der Iframes und P3P umgibt.
Update 3 (Tag 3): Der Umgang von IE 11 mit Cookies verwirrt mich weiterhin. Je weiter ich in das Labyrinth von Microsoft reise, desto verlorener werde ich zwischen den sich bewegenden Wänden. Und hier drin sind Geister. Fragmente von halbträumten Sicherheitsrichtlinien, die sich zu einer ätherischen Kreatur verwoben haben, die mich bei jeder Bewegung verfolgt und verspottet. Zuerst war ich erstarrt, verängstigt und entsetzt über die kaum zu ergründende Form, die gerade außer Sichtweite schoss, aber mit jeder Stunde bekomme ich mehr Trost aus der bloßen Kenntnis ihrer Nähe. Könnte dies genau das Tier sein, das ich hierher geschickt habe, um mich zu konfrontieren? Wie könnte ich in solchen Zeiten meinen einzigen Gefährten töten?
quelle
P3P: CP="ALL DSP COR CUR ADM PSA CONi OUR SAM OTR UNR LEG"
Ohne diesen Header funktionieren erwartungsgemäß keine Cookies im iframe. Damit funktionieren einige Cookies, andere, die scheinbar zufällig sind, nicht. Ich konnte kein Muster oder etwas anderes an denen finden, die nicht funktionieren.we do not have P3P
und es funktioniert gut.Antworten:
Bei Internet Explorer 11 ist ein ähnliches Problem aufgetreten, bei dem das Sitzungscookie nach einer Umleitung über https fehlte.
Die Anforderungskette sah ungefähr so aus:
erste Anfrage an / -> Sitzungscookie setzen -> zu einer externen URL umleiten -> zurückleiten (Sitzungscookie verloren)
Unser Problem war auf einen ungültigen Hostnamen gemäß RFC952 zurückzuführen. Unsere Testserver- URL hatte Unterstriche. Es scheint, dass Internet Explorer das Sitzungscookie bei der Umleitung über https stillschweigend löscht, wenn die URL nicht RFC952 entspricht. Bei Verwendung von Bindestrichen anstelle von Unterstrichen funktionierte alles wie erwartet.
Die ursprüngliche Lösung wurde im Abschnitt Update 2 dieses asp.net-Blogposts aus dem Jahr 2004 gefunden. Zugehöriges Microsoft-Bug-Ticket hier.
Hoffentlich hilft das jemandem.
quelle
Ich habe festgestellt, dass Sitzungscookies häufig verloren gehen, wenn der IE7-Kompatibilitätsmodus für eine neue Seite aktiviert ist. Ich nehme an, dasselbe könnte für den Iframe gelten. Sendet der Iframe einen X-UA-kompatiblen Header-Wert, der sich von der übergeordneten Seite oder von früher in der Sitzung unterscheidet? Vielleicht hat Ihre Sitzung mit IE = edge begonnen und die iframe-Seite setzt sie auf IE = 7. In diesem Fall scheint der IE häufig eine neue IE-PID für die Seiten des Kompatibilitätsmodus und die Sitzungscookies zu erstellen (diese werden jedoch anscheinend nicht übertragen.
quelle
Ich habe das gleiche Problem, das zu diesem Thema erwähnt wird.
Unsere Site befindet sich in einem Iframe und verwendet eine Sitzung zum Cookie (asp.net_session). Während der Navigation auf der Website gibt es kein Problem (Cookies funktionieren und werden an die Anforderungsheader angehängt). Wenn wir den Kunden jedoch auf eine andere Website (otherite.com) umleiten und dann den Kunden auf unsere Domain umleiten und das Öffnen als "_top" erzwingen, sendet der Browser die Cookies nicht mit Anfragen, sodass wir die Kundensitzung verloren haben. Dieses Problem trat nur im Internet Explorer auf.
Was können Sie raten, um dieses Problem zu beheben?
quelle
Überprüfen Sie Ihre Internetoptionen in IE11. Extras> Internetoptionen> Datenschutz> Erweitert
Vielleicht sollten Sie das überschreiben und "Sitzungscookies immer zulassen" aktivieren.
quelle