多子域cookie和ajax问题

时间:2010-11-18 17:00:39

标签: jquery ajax cookies cross-domain

我需要一个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域不能使这个工作?

由于

1 个答案:

答案 0 :(得分:1)

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