【发布时间】:2014-04-21 08:59:09
【问题描述】:
我正在使用 $.ajax 发出 ajax 请求。响应具有 Set-Cookie 标头集(我已经在 Chrome 开发工具中验证了这一点)。但是,浏览器在收到响应后不设置cookie!当我导航到我域中的另一个页面时,不会发送 cookie。 (注意:我没有做任何跨域 ajax 请求;请求与文档在同一个域中。)
我错过了什么?
编辑:这是我的 ajax 请求的代码:
$.post('/user/login', JSON.stringify(data));
这是请求,如 Chrome 开发工具所示:
Request URL:https://192.168.1.154:3000/user/login
Request Method:POST
Status Code:200 OK
Request Headers:
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:35
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
DNT:1
Host:192.168.1.154:3000
Origin:https://192.168.1.154:3000
Referer:https://192.168.1.154:3000/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36
X-Requested-With:XMLHttpRequest
Form Data:
{"UserId":"blah","Password":"blah"}:
回复:
Response Headers:
Content-Length:15
Content-Type:application/json; charset=UTF-8
Date:Sun, 16 Mar 2014 03:25:24 GMT
Set-Cookie:SessionId=MTM5NDk0MDMyNHxEdi1CQkFFQ180SUFBUkFCRUFBQVRfLUNBQUVHYzNSeWFXNW5EQXNBQ1ZObGMzTnBiMjVKWkFaemRISnBibWNNTGdBc1ZFcDNlU3RKVFdKSGIzQlNXRkkwVjJGNFJ6TlRVSHA0U0ZJd01XRktjMDF1Y1c1b2FGWXJORzV4V1QwPXwWf1tz-2Fy_Y4I6fypCzkMJyYxhgM3LjVHGAlKyrilRg==; HttpOnly
【问题讨论】:
-
所以这可能是一个旧线程,但我偶然发现它正在寻找其他东西,我注意到您的请求在标题中有
DNT: 1。如果我记得,这是 Do Not Track,浏览器要求不允许设置 cookie。 -
如果您在使用 Apollo 时遇到此问题,请查看他们的文档中的 this section