ASP.NET nicht ordnungsgemäß durch Komma getrennt Cookies handhaben
-
25-09-2019 - |
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.
seinkennt 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. : -)
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.