jQuery .ajax()不会设置cookie

时间:2013-08-20 18:23:11

标签: jquery ajax cookies cors

我正在尝试使用jQuery .ajax()调用设置浏览器cookie,但它无效。

console.log("before cookies:" + document.cookie);
$.ajax({
    dataType: "json",
    contentType: "application/json",
    url: url,
    type: "GET",
    processData: false
}).then(function (data) {
    console.log("after cookies:" + document.cookie);
});

在服务器端,系统会在响应中添加Set-Cookie:

Access-Control-Allow-Headers    Origin, X-Requested-With, Content-Type, Accept
Access-Control-Allow-Origin *
Content-Length  63
Content-Type    application/json;charset=ISO-8859-1
Expires Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie  myApiKey=testkey;Expires=Wed, 20-Aug-2014 18:11:57 GMT;Max-Age=31536000

输出为空:

before cookies:
after cookies:

这就是问题。主页面位于一个子域,而ajax调用位于另一个子域(api.mydomain.com)。但我想我已经在服务器端正确设置了CORS头。它应该工作。

Firebug报告已设置cookie,但不知何故,外页不可见。有什么诀窍?

1 个答案:

答案 0 :(得分:1)

事实证明这是一个cookie域问题,有几个曲折:域有一个必须被剥离的端口号,此外,此设置中的服务器端无权访问请求主机名,仅IP地址,搞砸了其他事情。

另外,我尝试使用javascript在客户端设置cookie,但事实证明客户端安全性不允许您设置跨域cookie。 CORS仅适用于服务器端。