xmlhttprequest和set-cookie&曲奇饼

时间:2012-06-11 09:02:00

标签: javascript cookies xmlhttprequest setcookie cors

我认为我误解了使用xmlhttprequest管理cookie。我有一个服务器响应javascript中的XMLHttpRequest,我的服务器返回Allow-Control-Access-OriginAccess-Control-Allow-HeadersAccess-Control-Expose-HeadersAccess-Control-Allow-Credentials标头,其值正确。< / p>

我正在使用javascript在服务器上进行摘要身份验证,没问题,我收到来自服务器的WWW-Authenticate标头,我处理并向服务器发送带有所有摘要响应的Authorization标头一切都好。 问题是,当摘要挑战成功时,我的服务器返回一个Set-Cookie标头,我必须得到它并添加到我的所有xhr请求的其余部分。 浏览器(使用Chromium和Chrome)不允许我访问标题:

xhr.getResponseHeader("Set-Cookie");

好的,在XMLHTTPREQUEST Level 2中它说:“返回响应中的所有标头,但字段名称为Set-Cookie或Set-Cookie2的标头除外” 好吧,所以我不能接受它,但有什么办法呢?使用Chrome Api进行Cookie(目前我还没有注意到它的注意事项),但我希望以标准的方式做到可行。 随着:

xhr.withCredentials = true;

表示浏览器自动获取set-cookie并发送cookie标题?

1 个答案:

答案 0 :(得分:16)

来自CORS规范http://www.w3.org/TR/cors/#make-a-request-steps

  

每当应用make a request步骤时,从设置了手动重定向标志的源source origin获取请求URL,如果设置了omit credentials标志,则设置block cookies标志。使用方法请求方法,实体主体请求实体主体,包括作者请求标头,如果未设置省略凭证标志,则包括用户凭证。如果源origin是全局唯一标识符,则排除Referer标头。

正如您所说 - 如果您使用withCredentials,则会通过浏览器添加Cookie。