Frage

Nach die RFC , einzelne Cookies in der "Cookie" HTTP-Header kann werden durch Komma sowie durch Semikolon getrennt. Allerdings ist ASP.NET nicht das Komma Fall richtig analysieren -. Es nicht Komma zählt als Separator, hält es aber nur einen Teil des Wertes

Beispiel: Wenn ein Client-Header Cookie: a=b, c=d sendet, wird die ASP.NET-Anwendung sieht nur ein Cookie mit dem Namen "a" mit dem Wert "b, c = d".

Als Sonderfall geschieht das Gleiche, wenn der Client mehr Cookie-Header sendet (eine für jedes Cookie) statt alle Cookies in einem Header zu kombinieren. Aus HTTP Sicht ist dies in vollem Umfang gültig, und in einem solchen Fall der effektive Wert des Headers sollte Verkettung der Werte aller seiner Instanzen durch Komma getrennt.

sein

kennt jemand eine Abhilfe (oder vielleicht eine Lösung?) Für das? Ich brauche unbedingt diese Funktion zu erhalten, weil ich den Client nicht steuern.

P. S. Es ist eine Ironie, dass nach dieses Thema , built-in .NET HTTP Client (auch bekannt als HttpWebRequest) Verhalten ist genau das Gegenteil, und verursacht auch Probleme. : -)

War es hilfreich?

Lösung

Ich glaube, die einfachste Lösung das Verhalten immer gewünscht (unabhängig von Standards Korrektheit) wäre ein erstellen Httpmodule, die diese Informationen korrekt analysieren würde von HttpContext.Request.Headers und Ort korrigierten Informationen in HttpContext.Request.Cookies.

Andere Tipps

Sowohl RFC 2109 und RFC 2965 sind dafür bekannt, nicht die Wirklichkeit zu beschreiben.

Sie sollten einen Blick auf draft-ietf-httpstate -cookie , die ein Arbeitsergebnis der neuen IETF httpstate Arbeitsgruppe ist.

Die Version, die Sie verknüpft ist veraltet. Dieses HTTP State Management Mechanism Dokument ist die neueste und größte und es gibt Semikolons. Es heißt, dass Kommas für zukünftige Kompatibilität akzeptiert werden sollen, aber dies ist nicht erforderlich:

  

Hinweis: Für Abwärtskompatibilität des Separator in den Cookie-Header      ist ein Semikolon (;) überall. Ein Server sollte auch akzeptieren, Komma (,)      als Trennzeichen zwischen Cookie-Werte für zukünftige Kompatibilität.

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