1. ホーム

IE10でSetAuthCookieが無効である。

2022-03-18 10:24:08

  問題はこれです。ローカルで認証チケットを設定するテストは問題なく、サーバーに公開した後、アクセスアドレスに以下のような暗号化されたような特殊文字が追加されました。

http://www.example.com/(F(1xe9eXIxPzMALrZu6xd_xiccanJf4m0bo0ceEJ70Mv20XYaMSlA2))/some/path

通常のアドレスのはずです。

http://www.example.com/some/path

  私のテスト環境は、win7 64bit、IE10です。

  サーバーでのIE8テストも、特定環境では問題があります。Windows Server 2003 64ビット、IE8

  両方の環境でアクセスすると、正常なURLが生成されない

長い間私を悩ませてきた非常に奇妙な問題で、以前一度現れて、その後コードが再リリースされて実際に勝手に良くなって、今日また遭遇したので、完全に解決しようと思い、FormsAuthenticationが出た後にようやくテストをするために非常に簡単な例を書きました。クッキー、テストのためのコードです。

FormsAuthentication.SetAuthCookie("1", false)を実行します。



Response.Redirect("Default.aspx") を実行します。

最後に、これらの特殊文字は実は認証チケットであり、クライアントはCookieを受け取らないため、Asp.netのアドレスバーにCookieの情報を書き込んでいることを、マイクロソフトの 認証チケットの原理 を理解した後、どのようにそれを解決するか、そして最終的にGoogleは答えを見つけた:。

これはIE10のバグや asp.net  4で、IE10ではhttpヘッダーが変更され、そのため asp.net  4は、クライアントがCookieを有効にしていないと判断し、認証に失敗する。



簡単な解決策は、サイトのルートにブラウザの定義ファイルを追加することです。



手順は以下の通りです。



  1. App_Browsers フォルダを追加します。



  2. 2. IE10.browser のような "*.browser" のサフィックスを持つファイルを追加します。



  3. 以下の内容のファイルを追加します。

  <browsers> 
    <browser refID="Default"> 
      <capabilities><! -- To avoid wrong detections of e.g. IE10 --> 
      <capability name="cookies" value="true" /> 
      <capability name="ecmascriptversion" value="3.0" /> 
      </capabilities> 
    </browser> 
  </browsers>

参考記事 http://www.cnblogs.com/79039535/p/3335121.html