1

クロスドメインの問題のため、2つのドメイン間のセッションを検出するための新しい回避策を試すことにしました。このプロセスはCookieを設定しようとしていないので機能すると思いました。また、ChromeとFirefoxでは正常に機能しますが、IE9では機能しません。

デバッグモードでステップスルーしましたが、リクエストしたaspxページはそれ自体のRequest.Cookiesにアクセスできませんが、chromeを使用している場合はアクセスできます。

プロセスは次のとおりです。

domain1(asp.net mvcアプリケーション)で、ユーザーがログインします。そのログインプロセスの一部として、そのドメインにCookieが設定されます。次に、このサーバーのテストページにアクセスすると、Cookieが設定されていることがわかります。

domain2(asp.net webformsアプリ)で、domain1のテストページにjQuery.ajaxリクエストを送信します。これは、Cookieをチェックし、暗号化された文字列を返すことを目的としています。

このリクエスト中にajax経由で呼び出されたときにdomain2にステップスルーすると、request.cookiesコレクションにデータが入力されていないことがわかります。苛立たしいことに、User.Identity.IsAuthenticatedはtrueですが、設定したCookieにアクセスできません。

これは、クロスドメインセキュリティ全体が実際に機能しているもう1つの例ですか?私には、jsonpや他のすべてのさまざまなhheaderなどを使用してajax呼び出しを行うことさえ、それ以上のものであるように見えるので、この状況では役に立たないようです。

4

1 に答える 1

1

It seems that you're correct in your assumption. JQuery will by default not send cookies if its connected to a domain that is not the same as the domain the page is on.

You can try using the xhrFields from the JQuery API to perform the cross domain call.

$.ajax({
url: a_cross_domain_url,
xhrFields: {
   withCredentials: true
}
});

http://api.jquery.com/jQuery.ajax/

Hope that helps!

于 2012-07-30T16:36:55.943 に答える