我在使用 cookie 进行跨源资源共享时遇到问题。这是我的设置:
客户:
$.ajax({
type: 'POST',
url: '/processReq',
data: params,
xhrFields: {withCredentials:true},
crossDomain: true,
success: ...
});
我已经在浏览器中调试了客户端,并验证了 XMLHttpRequest.withCredentials 实际上是正确的。
服务器:
我正在设置以下标题:
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Origin', '*');
我的问题是我无法让浏览器存储会话 cookie,并在随后的请求中发送到服务器。
以下是浏览器中的响应标头:
{
"server": "nginx/1.2.6",
"date": "Fri, 01 Feb 2013 23:46:07 GMT",
"content-type": "application/json; charset=utf-8",
"content-length": "306",
"connection": "keep-alive",
"x-powered-by": "Express",
"access-control-allow-credentials": "true",
"access-control-allow-origin": "*",
"set-cookie": [
"id=s%3Azm1m...NXe4Lkr9rLw; Domain=api.mydomain.io; Path=/; Expires=Sat, 01 Feb 2014 23:46:07 GMT; HttpOnly"
]
}
每次我测试时,我都没有收到发送到服务器的 cookie。我错过了什么吗?任何帮助深表感谢。