1

domain1.com に domain1.com と domain2.com の 2 つの Web サイトがあります。ユーザーが認証されているかどうかを示す応答を書き込むジェネリックハンドラーがあります。

string json = "{\"status\":\"" + HttpContext.Current.User.Identity.IsAuthenticated + "\"}";
HttpContext.Response.Clear();
HttpContext.Response.ContentType = "application/jsonp"
HttpContext.Response.Write(json);

ブラウザを使用して generichandler を表示すると、すべて正常に動作します。ユーザーがログインしている場合は、"status":"true" が返されます。そうでない場合は、"status":"false" が返されます。

$.get() を使用して domain2.com からこのジェネリック ハンドラにリクエストを送信すると、問題が発生します。ユーザーがログインしているかどうかに関係なく、結果は常に "status":"false" になります。クロスドメイン違反の種類?私は本当にこれを理解していません、私を助けてください、ありがとう。

4

1 に答える 1

1

ASP.NET フォーム認証を使用すると、そのドメインに対して ASPXAUTH Cookie が作成されます。

Cookie は要求ごとに送信されるため、ASP.NET は ASPXAUTH Cookie (domain2.com には存在しません) を探し、ユーザーが認証されていないと判断します。

ニーズに合ったクロスドメイン SSO ソリューションを検討する必要がある場合があります。こちらをご覧ください: http://www.codeproject.com/Articles/106439/Single-Sign-On-SSO-for-cross-domain-ASP-NET-applic

于 2013-06-16T04:27:12.923 に答える