Mir muss etwas Grundlegendes über Cookies fehlen. Auf localhost, wenn ich auf der Serverseite ein Cookie setze und die Domäne explizit als localhost (oder .localhost) spezifiziere. Das Cookie scheint von einigen Browsern nicht akzeptiert zu werden.
Firefox 3.5: Ich habe die HTTP-Anfrage in Firebug überprüft. Was ich sehe ist:
Set-Cookie:
name=value;
domain=localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
oder (wenn ich die Domain auf .localhost setze):
Set-Cookie:
name=value;
domain=.localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
In beiden Fällen wird das Cookie nicht gespeichert.
IE8: Ich habe kein zusätzliches Tool verwendet, aber das Cookie scheint nicht ebenfalls gespeichert zu sein, da es bei nachfolgenden Anforderungen nicht zurückgesendet wird.
Opera 9.64: Sowohl localhost als auch .localhost funktionieren , aber wenn ich die Liste der Cookies in den Einstellungen überprüfe, wird die Domäne auf localhost.local festgelegt, obwohl sie unter localhost (in der Listengruppierung) aufgeführt ist.
Safari 4: Sowohl localhost als auch .localhost funktionieren , werden jedoch in den Einstellungen immer als .localhost aufgeführt. Auf der anderen Seite ein Cookie ohne explizite Domain, das nur als localhost (kein Punkt) angezeigt wird.
Was ist das Problem mit localhost? Aufgrund einer solchen Anzahl von Inkonsistenzen müssen einige spezielle Regeln für localhost gelten. Außerdem ist mir nicht ganz klar, warum Domains ein Punkt vorangestellt werden muss. In RFC 2109 heißt es ausdrücklich:
Der Wert für das Domain-Attribut enthält keine eingebetteten Punkte oder beginnt nicht mit einem Punkt.
Warum? Das Dokument zeigt an, dass es etwas mit Sicherheit zu tun hat. Ich muss zugeben, dass ich nicht die gesamte Spezifikation gelesen habe (kann es später tun), aber es klingt ein bisschen seltsam. Auf dieser Grundlage wäre es unmöglich, Cookies auf localhost zu setzen.