2011-01-14 4 views
47

Gibt es Probleme beim Zurücksenden eines Cookies während einer 302-Weiterleitung? Zum Beispiel, wenn ich ein Return-to-URL-Cookie erstelle und den Benutzer in derselben Antwort umadressiere, wird jeder (moderne) Browser das Cookie ignorieren.Browser-Cookies während einer 302-Weiterleitung senden

+0

ein bisschen Lesen, ich denke, dass die Session-Variablen besser als Cookies wäre, da sie serverseitige und nicht darauf angewiesen Client Berechenbarkeit sind. – ADTC

Antwort

20

Die meisten Browser akzeptieren Cookies auf 302 Weiterleitungen. Da war ich mir ziemlich sicher, aber ich machte eine kleine Suche. Nicht alle modernen Browsern. Internet archive Link from a now removed/dead/ microsoft connect Q/A on Silverlight Client HTTP Stack ignores Set-Cookie on 302 Redirect Responses (2010)

Ich denke, wir jetzt einen Ersatz für IE6 haben und es ist Windows Mobile Browser ...

+1

Die von Ihnen angegebene Forenseite kann nicht mit der URL aufgerufen werden. Meinst du IE6 und Windows Mobile Browser nicht? – hiroshi

+1

Link ist umgezogen. Ich habe einen neuen Link mit dem gleichen Inhalt gesetzt. und ich meine IE spezifischen Versionen für mobile fügen Sie ihre eigenen Bugs – regilero

31

Nach dieser Blog-Post: http://blog.dubbelboer.com/2012/11/25/302-cookie.html alle gängigen Browser, IE (6, 7, 8, 9, 10) , FF (17), Safari (6.0.2), Opera (12.11) setzen sowohl auf Windows als auch auf Mac Cookies auf Weiterleitungen. Dies gilt sowohl für 301- als auch für 302-Weiterleitungen.

10

Here ist der Chromium-Bug für dieses Problem (Set-Cookie für HTTP-Antwort mit Status 302 ignoriert).

+0

Status: WontFix - permanenter Fehler – Slawa

11

Eine Mitteilung (an Entwicklern des Leben retten):

IE und Edge-ignorieren in Umleitungsantwort Set-Cookie, wenn Domäne des Cookies localhost ist.

Lösung:

Verwenden 127.0.0.1 statt localhost.

+4

IE und Edge haben möglicherweise "behoben" dies, so dass sie nicht setzen Cookies für 127.0.0.1 entweder. Do! Und sie fragen sich, warum Entwickler nicht alle IE lieben ... Deine Antwort endete immer noch mit ungefähr 4 Stunden Kopfkratzen für mich. Vielen Dank! – GlenPeterson

0

In meinem Fall habe ich CookieOptions.Secure = True, aber testete es auf http://localhost., Und Browser ausblenden Cookies entsprechend der Einstellung.

Um dieses Problem zu vermeiden, können Sie die Cookie-Option Sicher stellen, um dem Protokoll Request.IsHttps, z.

new CookieOptions() 
       { 
        Path = "/", 
        HttpOnly = true, 
        Secure = Request.IsHttps, 
        Expires = expires 
       }