【问题标题】:Asp.net jquery ajax request.cookies cross domainAsp.net jquery ajax request.cookies 跨域
【发布时间】:2012-07-28 08:09:44
【问题描述】:

由于跨域问题,我决定尝试一种新的解决方法来检测我的两个域之间的会话。我认为这个过程会起作用,因为我没有尝试设置任何 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 调用,在这种情况下也无济于事,因为它似乎不止于此?

【问题讨论】:

    标签: asp.net ajax xmlhttprequest cross-domain jsonp


    【解决方案1】:

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

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

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

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

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-31
      • 2013-06-04
      • 2015-10-06
      • 2011-08-23
      • 2023-03-30
      • 2011-07-03
      • 2011-12-30
      相关资源
      最近更新 更多