18

我想我误解了使用 xmlhttprequest 管理 cookie。我有一个响应XMLHttpRequest用 javascript 制作的服务器,我的服务器返回,Allow-Control-Access-Origin和具有正确值的标头。Access-Control-Allow-HeadersAccess-Control-Expose-HeadersAccess-Control-Allow-Credentials

我正在使用javascript在服务器中进行摘要身份验证,没问题,我WWW-Authenticate从服务器接收到好的标头,我处理并向服务器发送带有所有摘要响应的授权标头,一切正常。问题是,当摘要挑战成功时,我的服务器返回一个 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 标头?

4

1 回答 1

16

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

每当应用发出请求步骤时,使用手动重定向标志设置从原始源源获取请求 URL,如果设置了省略凭据标志,则设置块 cookie 标志。使用方法请求方法,实体主体请求实体主体,包括作者请求标头,如果省略凭据标志未设置,则包括用户凭据。如果源源是全局唯一标识符,则排除 Referer 标头。

正如您所说 - 如果您使用withCredentials.

于 2012-06-12T15:01:39.890 回答