2009-08-08 2 views
2

Ich habe ein System, das einen Cookie in PHP generiert und dann aus dem klassischen ASP löschen muss. Dies ist eine schnell-und-schmutzig-dev-Box, nur eine freie XP-Maschine mit IIS5, PHP5 und ASP3. Ich habe die hosts-Datei verwendet, um einen gefälschten Domänennamen (www.localtest.com) zu erstellen, da andere Teile des Prozesses nicht mit localhost funktionieren würden.Der unkündbare Cookie (ASP3, PHP5, IIS5, FF3.5, IE8)

Die PHP-Datei befindet sich in einem Unterverzeichnis des Site-Stammverzeichnisses, aber die Cookie-Domäne lautet .locatest.com und der Pfad lautet root (/). Der Cookie-Name ist "authkey" und der Wert ist ein 32-Byte-Hashcode.

Die ASP-Datei befindet sich im Site-Stammverzeichnis (für jetzt). Es kann den Cookie gut lesen, nachdem PHP es erstellt hat, aber egal, was ich versuche, ich kann den Cookie überhaupt nicht von ASP ändern - es wird den Wert nicht ändern, geschweige denn den Ablauf ändern. Sowohl Firefox 3.5 als auch IE 8 ignorieren jeden Versuch, den ich gemacht habe (Zahlen, die, wenn sie sich schließlich auf etwas einigen, dies wären).

Ich habe viele, viele Variationen ausprobiert - nur den Ablauf (auf eine große Vielfalt von Werten in verschiedenen Formaten) eingestellt, alle Parameter so eingestellt, dass sie genau dem Cookie mit Ausnahme des Ablaufs entsprechen, mit Response.AddHeader Cookie-Header mit all diesen Variationen, setzen Sie den Wert auf false und schließlich nur einen Versuch, den Wert in eine andere Zeichenfolge zu ändern, die fehlgeschlagen ist.

Was zum Teufel ist los? Ist das ein ASP-Nebeneffekt, der mit einer "falschen" Domain läuft? Ich habe diesen Weg über 10 Jahre lang entwickelt, ohne dass ASP Probleme mit einer von einem Host angegebenen Domäne hat, obwohl ich nie Gelegenheit hatte, ein Cookie zu löschen (seltsam genug).

Ich bin besonders überrascht, dass ich nicht einmal den Wert festlegen konnte.

+1

netter Titel; klingt wie ein käsiger 80er Horrorfilm hah –

+1

mein Verdacht wäre, dass der Name nicht genau übereinstimmt, aber es ist schwer zu sagen. Ich denke nicht, dass es ein Problem mit ASP und hosts-spezifizierten Domains ist. Lassen Sie es uns wissen, wenn Sie es lösen. – Cahlroisse

Antwort

0

Schräge.

Das Problem war der führende Punkt im Domain-Namen. Da meine Seite keine Subdomains verwendet, brauche ich sie nicht wirklich - aber anscheinend, wenn dieser Punkt da ist, werden die Browser den Cookie nicht löschen oder ändern.

Ich frage mich, ob das neue Verhalten ist, da ich weiß, dass viele Systeme darauf angewiesen sind, Sub-Domain-neutrale Cookies (wie phpBB) zu machen.

Auch, um den Cookie zu löschen musste ich alles - Domäne, Pfad und Datum angeben, aber ich denke, das ist eigentlich per RFC, so bin ich nicht allzu besorgt darüber.

+0

Die Domain-Zeile sollte nur "localtest.com" sein - kein führender Punkt. Ich nehme an, PHP hat es für dich repariert - aber Fiddler wird es dir sicher sagen. –

+0

PHP entfernt es nicht, und es ist gültige Syntax. Ein führender Punkt erstellt einen Cookie, auf den über alle Subdomains zugegriffen werden kann. Laut RFC (http://www.ietf.org/rfc/rfc2109.txt) "muss eine explizit angegebene Domäne immer mit einem Punkt beginnen". – McGuireV10

+0

@ MV10 - Sie haben Recht - das ist, was der RFC sagt. Ich habe das vermisst, da es kein Browser interessiert. http://blogs.msdn.com/ieinternals/archive/2009/08/20/Wininet-IE-Cookie-Internals-FAQ.aspx –

2

Verwenden Sie Fiddler oder ähnliches, um den tatsächlichen HTTP-Verkehr zu betrachten - die Servertechnologie sollte keine Rolle spielen, solange die richtigen HTTP-Header gesendet werden. Vermutlich sind sie das nicht, aber Sie werden es nicht genau wissen, wenn Sie sich den HTTP-Stream nicht ansehen.

(Normalerweise würde ich Wireshark empfehlen, aber das funktioniert nicht, wenn der Client und Server auf der gleichen Maschine sind.)

+0

Cool, danke, ich habe nach etwas wie Fiddler gesucht. – McGuireV10

+0

Die Header sehen völlig normal aus. Fiddler zeigt: Set-Cookie: authkey =; abläuft = Samstag, 01. Mai 1999 04:00:00 GMT; path =/ Das verwendet diese Zeile des Skripts in ASP: Response.Cookies ("authkey"). Läuft ab = #May 1, 1999 # – McGuireV10

+0

(Hmm ... keine Leerzeilen in Antworten, denke ich?) – McGuireV10