【问题标题】:multi-sub-domain cookies and ajax problems多子域 cookie 和 ajax 问题
【发布时间】:2011-05-12 04:13:22
【问题描述】:

我需要一个 HttpOnly 身份验证 cookie 才能使用:

mydomain.com
www.mydomain.com
abc.mydomain.com

这样我就可以通过一次登录登录到所有三个地方。

通过将我的 cookie 域设置为:

.mydomain.com

这是设置 cookie 的响应标头:

MYAUTHCOOKIE=FOO; domain=.mydomain.com; path=/; HttpOnly

这一切都适用于正常的浏览器请求。

但是,我需要从mydomain.comwww.mydomain.comabc.mydomain.com 发出AJAX 请求。

当我发出请求时,它没有通过身份验证 cookie。为什么会这样,我该怎么办?

如果我向与 JS 所在页面相同的主机发出请求,它会发送 cookie:s

这是我的请求代码:

$.ajax({
    type: "POST"
    , data: { data: { foo: bar} }
    , dataType: "json"
    , url: "http://abc.mydomain.com/foo"
    , timeout: 5000
    , success: function (data, textStatus) {
        alert('woo!');
    }
    , error: function (xhr, textStatus, error) {
        alert('meh');
    }
});

这是一些跨域策略吗?为什么 cookie 域不起作用?

谢谢

【问题讨论】:

    标签: jquery ajax cookies cross-domain


    【解决方案1】:

    根据same origin policy,子域确实对您的顶级域“敌对”,但可以通过设置document.domain(同一篇文章)来解决。

    【讨论】:

    • 如果您在 URL one.foo.com 上将 document.domain 设置为 'foo.com',那么服务器在向 'two' 发出请求之前如何知道 two.foo.com 上的 document.domain 设置?
    • 使用访问控制标头发出 CORS 请求会如何影响这种情况?
    猜你喜欢
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 2015-07-04
    • 2011-09-15
    • 1970-01-01
    相关资源
    最近更新 更多