多子域cookie和ajax问题

And*_*ock 5 cookies ajax jquery cross-domain

我需要一个HttpOnly身份验证cookie来处理:

mydomain.com
www.mydomain.com
abc.mydomain.com
Run Code Online (Sandbox Code Playgroud)

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

这可以正常工作,方法是将我的cookie域设置为:

.mydomain.com
Run Code Online (Sandbox Code Playgroud)

这是设置cookie的响应头:

MYAUTHCOOKIE=FOO; domain=.mydomain.com; path=/; HttpOnly
Run Code Online (Sandbox Code Playgroud)

这一切都适用于普通的浏览器请求.

但是,我需要从做一个AJAX请求mydomain.com,并www.mydomain.comabc.mydomain.com.

当我发出请求时,它没有传递身份验证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');
    }
});
Run Code Online (Sandbox Code Playgroud)

这是一些跨域政策吗?为什么cookie域不能使这个工作?

谢谢

Dmi*_*nko 1

根据同源策略,子域名确实对您的顶级域名“敌对”,但可以通过设置 document.domain 来修复(同一篇文章)。