1

由于跨域问题,我决定尝试一种新的解决方法来检测我的两个域之间的会话。我认为这个过程会起作用,因为我没有尝试设置任何 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 是真的,但我无法访问我设置的 cookie。

这只是整个跨域安全性的另一个例子吗?对我来说,似乎甚至使用 jsonp 和所有其他各种 hheaders 等进行 ajax 调用,在这种情况下也无济于事,因为它似乎不止于此?

4

1 回答 1

1

看来您的假设是正确的。如果 JQuery 连接到的域与页面所在的域不同,则 JQuery 默认不会发送 cookie。

您可以尝试使用 JQuery API 中的 xhrFields 来执行跨域调用。

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

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

希望有帮助!

于 2012-07-30T16:36:55.943 回答