web-dev-qa-db-ja.com

302リダイレクト中にブラウザーCookieを送信する

302リダイレクト中にCookieを送り返す際に問題はありますか?たとえば、return-to-url cookieを作成し、同じ応答でユーザーをリダイレクトすると、(現代の)ブラウザーはcookieを無視しますか?

67
Abdullah Jibaly

ほとんどのブラウザは302リダイレクトでCookieを受け入れています。私はそれを確信していましたが、少し検索しました。すべてのmodernブラウザーではありません。 現在削除されている/デッド/からのインターネットアーカイブリンクMicrosoft connectQ/A onSilverlight Client HTTPスタックは302リダイレクトレスポンスでSet-Cookieを無視します(2010)

IE6の代替品があり、Windows Mobileブラウザだと思います...

32
regilero

このブログ投稿によると、 http://blog.dubbelboer.com/2012/11/25/302-cookie.html すべての主要なブラウザ、IE(6 、7、8、9、10)、FF(17)、Safari(6.0.2)、Opera(12.11)WindowsとMacの両方で、リダイレクトにCookieを設定します。これは、 301と302の両方のリダイレクト。

44
gavenkoa

1つの通知(開発者の命を救うため):

IEおよびEdgeは、Cookieのドメインがlocalhostの場合、リダイレクト応答でSet-Cookieを無視します。

解決策:

127.0.0.1localhostの代わりに使用します。

27

ここ は、この問題のChromiumバグです(ステータス302のHTTP応答ではSet-cookieは無視されます)。

14
llambda

これは本当にアプローチに眉をひそめていますが、30xセットCookieブラウザーの動作に依存したくない場合は、HTML meta http-equiv="refresh" Cookieを設定するときの「リダイレクト」。たとえば、PHPの場合:

<?php
    ...
    setcookie("cookie", "value", ...);
    url="page.php";
?>
<html>
<head><meta http-equiv="refresh" content=1;url="<?=$url?>"></head>
<body><a href="<?=$url?>">Continue...</a></body>
</html>

サーバーは適切な300xリダイレクトではなく200でSet-Cookieを送信するため、ブラウザーはCookieを保存してから「リダイレクト」を実行します。 <a>リンクは、ブラウザがメタリフレッシュを実行しない場合のフォールバックです。

0
MestreLion