相关疑难解决方法(0)

从ajax请求设置子域的cookie

我在www.example.com上有一个webapp,在api.example.com上有一个API.

webapp对API进行ajax调用.

在某个地方,我需要在api.example.com上放置一个cookie来保持会话跟踪.

为了跟踪我的问题,我在webapp和api的两个子域上设置了测试cookie.webapp在.exemple.com上设置了一个cookie,api在.exemple.com上设置了一个,在api.exemple.com上设置了另一个.Cookies仅使用Domain = .exemple.com设置.没有路径,没有HTTPOnly.

注意:最后我在api.exemple.com上只需要一个.但这些是用于测试的.

使用我的浏览器(Firefox 16)直接查询工作正常.查询api:设置并发送两个cookie.在www上查询:设置了cookie,并且也发送了来自api的两个.(当然我在api之后查询www).

现在,我清理浏览器cookie并仅查询www.在www上查询:工作正常,与以前一样.关于api的子查询,来自www的ajax请求:不发送cookie.Set-Cookies什么都不做.使用Firebug我在响应中看到了cookie.但是在后续请求或页面信息中没有它们的痕迹.

我事件试图在Firefox上启用cookie登录.绝对没有来自api的cookie的痕迹,甚至没有拒绝通知.

最后我只需要一种在api上存储一个cookie的方法.为此,我相当开放:)

信息:这两个服务器是NodeJS.我试图在客户端(document.cookies)设置服务器端的cookie(Set-Cookie标头),手动使用firebug.

其他帖子我已经检查过没有解决方案(以及其他许多我不记得的):

使用javascript设置跨子域cookie

Cookie和子域名

subdomain.example.com可以设置一个可以被example.com读取的cookie吗?

cookies subdomain

15
推荐指数
1
解决办法
1万
查看次数

多子域cookie和ajax问题

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

谢谢

cookies ajax jquery cross-domain

5
推荐指数
1
解决办法
4705
查看次数

标签 统计

cookies ×2

ajax ×1

cross-domain ×1

jquery ×1

subdomain ×1