2011-01-14 74 views
47

302リダイレクト中にCookieを返送する際に問題がありますか?たとえば、URLに返されるCookieを作成し、同じレスポンスでユーザーをリダイレクトすると、(現代の)ブラウザはCookieを無視しますか?302リダイレクト中にブラウザのCookieを送信する

+0

ちょっと読めば、セッション変数はクライアント側の予測可能性に依存せずサーバー側であるため、クッキーよりも優れていると思っています。 – ADTC

答えて

20

ほとんどのブラウザは302リダイレクトのCookieを受け入れています。私はそれについてはかなり確信していましたが、少し調べました。すべてではありません最新のブラウザ。 http://blog.dubbelboer.com/2012/11/25/302-cookie.htmlすべての主要なブラウザ、IE(6、7、8、9、10):私はこのブログの記事によると

+1

指定したフォーラムページにURLでアクセスできません。 IE6とWindows Mobileのブラウザが違いますか? – hiroshi

+1

リンクが移動しました。私はまったく同じ内容の新しいリンクを設定しました。私はIE固有のバージョンを自分のバグに追加することを意味します。 – regilero

31

...私たちは今、IE6の代替を持っており、それがWindows Mobileのブラウザだと思う 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)

、FF(17)、Safari(6.0.2)、Opera(12.11)の両方のウィンドウとMacで、リダイレクト時にCookieを設定します。これは301と302の両方のリダイレクトに当てはまります。

10

Hereは、この問題のChromiumバグです(ステータス302のHTTP応答では、Set-Cookieは無視されます)。 (開発者の命を救うために)

+0

ステータス:WontFix - 永久バグ – Slawa

11

ワン予告:クッキーのドメインがlocalhostのとき

IEとエッジがリダイレクト応答でのSet-Cookieを無視しています。

ソリューション:

使用127.0.0.1代わりのlocalhostの

+4

IEとEdgeは127.0.0.1のクッキーを設定しないため、これを "修正"している可能性があります。ドー!そして、なぜ開発者がIEを愛していないのだろうと思っています...あなたの答えは、まだ私の頭を掻く約4時間を終えました。ありがとう! – GlenPeterson

0

私の場合、CookieOptions.Secure = trueと設定しましたが、それはhttp://localhost。でテストされ、ブラウザは設定に従ってクッキーを非表示にします。

このような問題を回避するには、CookieのセキュアなオプションをRequest.IsHttpsというプロトコルに一致させることができます。

new CookieOptions() 
       { 
        Path = "/", 
        HttpOnly = true, 
        Secure = Request.IsHttps, 
        Expires = expires 
       } 
関連する問題