Warum sollte IE / Fiddler sieht verschiedene Cookie-Einstellung / Löschen von Chrome und FF / Live HTTP Headers?

StackOverflow https://stackoverflow.com/questions/1071365

Frage

Ich habe eine teilweise geerbt Web-Anwendung in PHP und nach um mit Fiddler Stossen habe ich ein wenig mehr Daten als bisher. Das Problem, das ich bin versucht zu lösen unerwünschte Logouts auf IE6 / 8 aber nicht FF / Chrome. Wenn ein Benutzer zwischen verschiedenen Seiten klickt, verschwindet das Login-Daten Cookies.

Das Verhalten unterscheidet sich in FF vs. IE, und die gemeldeten Informationen unterscheidet sich in fast genau der gleichen Art und Weise zwischen Fiddler (/ IE) und Live HTTP Headers (/ FF).

In Firefox die Cookies erscheinen wie die PHP behandelt werden spezifiziert: sie werden erstellt, wenn sich der Benutzer anmeldet und überprüft, „Remember me“, und sie werden nur gelöscht, wenn der Benutzer die Logout-Seite besucht, und sie haben eine zweiwöchige Haltbarkeitsdatum. Live HTTP Headers berichten nichts anders: Die Cookies werden nie als geändert oder gelöscht gemeldet, wenn der Benutzer klickt zwischen den Seiten

.

Aber mit IE, sie verschwinden, wenn der Benutzer zwischen verschiedenen Seiten klickt, und Fiddler berichten,

Cookies / Login
    Set-Cookie: *******=deleted; expires=Sun, 29-Jun-2008 21:07:46 GMT; path=; domain=.********.com
    Set-Cookie: *******=deleted; expires=Sun, 29-Jun-2008 21:07:46 GMT; path=; domain=.********.com

( ‚gelöscht‘ wird buchstäblich von Fiddler Ausgabe zitiert. Ich habe keinen Platz in meinem Code, wo entweder Wert auf eine magische Kette von ‚gelöscht‘ gesetzt ist.)

Nicht nur IE und Firefox haben unterschiedliche Interpretationen, wie die Website sagt, aber Fiddler und HTTP-Live-Headers berichten entsprechend unterschiedliche Versionen von dem, was die Seite der Fall ist.

Gibt es etwas Besonderes über IE und ‚gelöscht‘? Das mag seltsam klingen, aber tut IE will Cookies mit jedem Seitenaufruf oder so ähnlich wieder aktiviert werden?

Und wie kann ich IE beschwichtigen die Cookies in Frage zu segnen, wenn nicht vom Server gelöscht, wenn der Benutzer fordert er durch die Abmeldung URL zu besuchen?

War es hilfreich?

Lösung

Was ich fand schließlich wurden wie folgt: Firefox und IE anders verhielten, weil sie Caching unterschiedlich behandelt wurden, wenn ein fehlendes Dokument im 14 Tagen war Gültig bis: Header, die eingestellt worden war

.

Firefox offenbar war die Überprüfung einmal Daten fehlen, und dann wieder nicht anfordert.

IE, auf der anderen Seite, gehalten für ein Element auf Überprüfung ein Sheet den falschen Weg für, bekam 404 Seiten gibt, und die benutzerdefinierten 404-Seite hat ein Text Einladung, dass die Anmeldung der Benutzer ausgelöst werden abgemeldet (vielleicht nicht die besten vorformulierten). Ich denke, das Stylesheet im Cache gespeichert wurde, aber IE gehalten Elemente auf zu stellen, die fehlten.

So wurde das Caching Unterschiede sowie indirekte Aufnahme zuzüglich 404 Seite Verhalten.

Ich weiß noch nicht, was „gelöscht“ kommt. (Does PHP liefert das Wort „gelöscht“, wenn Sie ein Cookie-String auf einen leeren Wert gesetzt?)

Andere Tipps

IE wird kein Cookie gesetzt, wenn der Host einen Unterstrich in ihm hat, aber das ist nicht das Problem hier.

Fiddler nicht „erfinden“ anything--, wenn es sagt, dass es einen HTTP-Header-Setzen des Cookies auf den Wert „gelöscht“ bekam, das bedeutet, dass der Server buchstäblich, dass gesendet wird.

Sie können einen Blick auf nehmen möchten, ob Sie haben keine fehlerhafte Anfragen auf den Draht ausgehen, dass der Server die Cookies löschen verursachen. Zum Beispiel in einem anderen Thread, bemerkte jemand, dass ein IMG-Tag mit einer Quelle von „“ (leerer Zeichenkette) würde IE verursacht eine Anforderung für die Wurzel der Site und ihre Homepage der Login-Cookies gelöscht zu senden, wenn besucht.

IE6 / 7/8 haben derzeit eine Obergrenze von 50 Cookies pro Host, aber das ist nicht das, was Sie hier entweder treffen sind.

Ist die URL der Seite in Frage darin einen Unterstrich hat? Ich erinnere mich an IE Probleme mit Cookies von Domainnamen, die der Domainnamen-Spezifikation nicht folgen ( RFC 1035 Prüfungsabschnitt 2.3.1).

Es gibt auch (wo?) Einige Einschränkungen in IE in Bezug auf Cookies Größe und Anzahl der Cookies pro Domain. In IE6 glaube ich, die Begrenzung maximale Größe aller Cookies pro Domain 4095 Bytes und 20 Cookies pro Domäne war.

Das Problem kann auch auftreten, wenn Sie Header-basierte Umleitung verwenden, wo IE Spur des Cookies verlieren könnte.

Btw. das Datum, das Sie in den beiden Set-Cookie-Richtlinien vorgesehen sind sie von einem alten Protokoll oder der Server wirklich ein Cookie mit einem Verfallsdatum in der Vergangenheit (das ist der übliche Weg ist, gesetzt zu sagen .. „Hey Browser dieses Cookie als es löschen abgelaufenen Tagen bereits vor ")

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top