出于某种原因,我的浏览器(我已尝试过几次)没有设置cookie,即使服务器在使用fetch通过Ajax进行GET调用时返回了有效的set-cookie响应api提出请求
如果我通过将URL放在浏览器中进行相同的GET调用,浏览器会尊重(相同的)set-cookie响应标头,并保存cookie。
我已经通过LiveHeaders和Chrome网络检查员检查了请求和响应标头,但没有区别。
编辑:澄清一下,这不是ajax向某个服务器发送cookie的问题。这是一个问题,当一个响应带有有效的set-cookies标题时,浏览器根本不会保存cookie(根据文档是否应该遵守ajax)。
答案 0 :(得分:19)
经过多次打击,我通过设置'凭证来解决这个问题。请求的属性包括'。我的印象是,这只能控制在获取请求时向服务器发送cookie,但显然,至少在我正在使用的实现中,如果没有设置它也意味着如果从以下方式发送回来,cookie将不会被保存服务器。
来自https://fetch.spec.whatwg.org/
的规范请求具有关联的凭据模式,即"省略", "同源",或"包括"。除非另有说明,否则"省略"。
请求凭据模式控制凭证流程 取。当请求的模式是"导航"时,其凭证模式是 假设是"包括"和fetch目前不占其他 值。如果HTML在此处更改,则此标准将需要相应的 变化。
凭据是HTTP Cookie,TLS客户端证书和身份验证条目。