質問

私はASP.NETを使用しています。 Cookieを追加または設定します( HttpRequest 指定されたキー付きクッキーが含まれています)、そしてその後すぐに電話 Response.Redirect. 。 Cookieは設定されていません。これは正しい動作ですか? 302ステータスコードを使用したHTTP応答中にCookieを設定することについて相互に排他的なものはありますか?

これがソースです:

        if (context.HttpContext.Request.Browser.Cookies)
        {
            var cookies = context.HttpContext.Request.Cookies;
            var stateCookie = new HttpCookie(SR.session, clientState.SessionId.ToString());
            if (cookies.AllKeys.Contains(SR.session))
            {
                context.HttpContext.Response.Cookies.Set(stateCookie);
            }
            else
            {
                context.HttpContext.Response.Cookies.Add(stateCookie);
            }
        }

これが応答ヘッダーです

  • x-aspnetmvc-version -2.0
  • 接続 - 閉じます
  • キャッシュコントロール - プライベート
  • Content -Type -Text/HTML
  • 日付 - 日、2011年3月20日03:48:04 GMT
  • 位置 - http:// localhost:3599/home/redirected
  • サーバー-ASP.NET開発サーバー/9.0.0.0
  • x-aspnet-version -2.0.50727
役に立ちましたか?

解決

少しグーグルで検索した後、はい、いくつかのブラウザでは無視される可能性があるため、リダイレクト応答でCookieを設定することに問題があるようです。 (応答はクライアントにリソースを無視し、代わりに他のリソースを取得するように実際に伝えているため、ある程度は理にかなっているかもしれません)。

これはすでにここで説明しています: 302リダイレクト中にブラウザCookieを送信します

そのため、ページがリダイレクトされるようにクッキーを設定するようにアーキテクチャを変更します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top