2012-07-30 110 views
1

由于跨域问题,我决定尝试新的解决方法来检测我的两个域之间的会话。我认为这个过程会起作用,因为我没有尝试设置任何cookie,并且它在Chrome和Firefox中运行良好,但在IE9中没有。Asp.net jquery ajax request.cookies跨域

我已经在调试模式下进行了调试,并且我请求的aspx页面没有访问它自己的Request.Cookies,而当我使用chrome时,它确实没有。

的过程是:

在域1,(一个asp.net MVC应用程序)在用户登录作为该登录过程的一部分,一个cookie被设置在该域。如果我在这台服务器上打了一个测试页,我可以看到cookie已经设置好了。

在domain2(一个asp.net webforms应用程序)上,我向domain1上的该测试页发出了一个jQuery.ajax请求,该请求旨在检查cookie并返回一个加密字符串。

在通过ajax调用此请求期间逐句通过时,我可以看到request.cookies集合未被填充。令人沮丧的是,User.Identity.IsAuthenticated是真的,但我无法访问我设置的cookie。

这只是整个跨域安全性的另一个例子吗?对我来说,似乎甚至使用jsonp和所有其他各种头文件等进行ajax调用,在这种情况下不会有所帮助,因为它看起来不仅仅是这样吗?

回答

1

你的假设似乎是正确的。如果JQuery连接到与页面所在的域不相同的域,默认情况下不会发送Cookie。

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

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

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

希望帮助!