Frage

Kann mich bitte jemand auf den Firefox-Quellcode verweisen, in dem der Set-Cookie-Header analysiert wird?Ich möchte das genaue Verhalten verstehen.

Lesen Sie weiter, wenn Sie wissen wollen, warum?Aus verschiedenen Gründen in meiner Anwendung muss ich mehrere Cookies in einem einzelnen Set-Cookie-Header übergeben.RFC-2109 erwähnt eindeutig,

"Der Set-Cookie-Antwortheader besteht aus dem Token Set-Cookie:, gefolgt von einer kommagetrennten Liste mit einem oder mehreren Cookies.Jedes Cookie beginnt mit einem NAME=WERT-Paar, gefolgt von null oder mehr durch Semikolons getrennten Attribut-Wert-Paaren."

Also sollte ich in der Lage sein, folgenden Set-Cookie-Header zu übergeben

Cookie-Einstellungen:name1 = wert1;wert11=wert11;attr12 = attrval12, name2 = Wert2;wert21=wert21;wert22=wert22;

Es funktioniert nicht.Folgendes funktioniert jedoch

Cookie-Einstellungen:name1 = Wert1, name2 = wert2;wert1=Wert1;attr2=Wert attr2;

Und ich möchte verschiedene Attribute für verschiedene Cookies angeben.

[Update]

Reale Beispiele:

Beispiel#1-

Cookie-Einstellungen:cookie1 = wert1;Pfad = /, cookie2 = Wert2;Pfad=/

In diesem Fall analysiert Firefox das erste Cookie (dessen Name "cookie1" und der Wert "value1" ist) und holt es heraus (das zweite wird vollständig ignoriert)

Beispiel#2-

Cookie-Einstellungen:cookie1 = Wert1, cookie2 = Wert2;Pfad=/

In diesem Fall glaubt Firefox, dass es ein Cookie mit dem Namen "cookie1" und dem Wert "value1,cookie2 = value2" gibt.Dies ist wiederum nicht beabsichtigt.

War es hilfreich?

Lösung

Ein kurzer Spaziergang durch MXR zeigt an, dass die Hauptlogik in ist nsCookieService::SetCookieInternal.Sie können den Links nach Bedarf hin und her folgen.Was Ihr eigentliches Problem betrifft, kann es hilfreich sein, wenn Sie einen echten Beispielheader angeben.

Andere Tipps

Mein Verständnis ist, dass Browser den Standard in Bezug auf mehrere Cookies pro Set-Cookie-Header etwas anders implementieren.Sie können jedoch mehrere senden Set-Cookie header zum Festlegen des Werts mehrerer Cookies:

Set-Cookie: name1=value1; attr11=attrval11; attr12=attrval12
Set-Cookie: name2=value2; attr21=attrval21; attr22=attrval22

Obwohl es einen Grund gibt, warum Sie manuell Header für die Antwort erstellen, anstatt Ihr Framework (PHP, ASP.NET , RoR usw.) zur Verfügung stellt?

gut, das Lesen des Quellcodes ist klar, dass Firefox den RFC-2109 in dieser Hinsicht nicht implementiert und Cr oder LF anstelle von ',' als Cookie-Separator (Kündigungslinie Nr. 1934, 1959, 1990 in http://mxr.mozilla.org/mozilla-central/source/netwerk/cookie/nscookieservice.cpp ).Ich habe beide auf Firefox v3.6.6, Cr tätig, aber es ist nicht.

Schlussfolgerung: Bei Firefox kann ich CR anstelle von ',', um Cookies zu trennen.

PLITCH: NONE OUT OUT OUT OUT von (CR, LF, ',') arbeiten an Internet-Explorer.Jetzt kann mich jemand auf den "Quellen" -Code für dh zeigen, wo ich sehen kann, was sie als Cookie-Separator verwenden: -)

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