[我正在尝试使用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,但是以某种方式它对外部页面不可见。诀窍是什么?
事实证明,这是一个cookie域问题,但有几处曲折:该域的端口号必须被剥夺,而且,此设置中的服务器端无权访问请求主机名,只有ip地址,弄乱了其他内容。
[此外,我尝试使用javascript在客户端设置cookie,但事实证明,客户端安全性不允许您设置跨域cookie。 CORS仅用于服务器端。