繁体   English   中英

为什么浏览器会忽略set-cookie标头,并且使用fetch不会从Ajax调用中保存cookie?

[英]Why is a set-cookie header being ignored by browser and the cookies not saved from an Ajax call using fetch?

出于某种原因,我的浏览器(我尝试了几个)不设置cookie,即使服务器返回有效的set-cookie响应,当使用fetch api通过Ajax进行GET调用来发出请求时

如果我通过将URL放在浏览器中进行相同的GET调用,则浏览器会尊重(相同的)set-cookie响应头并保存cookie。

我通过LiveHeaders和Chrome网络检查器检查了请求和响应标头,没有区别。

编辑:澄清一下,这不是ajax向服务器发送cookie的问题。 这是一个问题,当一个响应返回时,有效的set-cookies标题(根据文档应该遵守是否ajax),浏览器根本不保存cookie。

在经过多次打击之后,我通过将请求的“凭证”属性设置为“包含”来解决了这个问题。 我的印象是,这只能控制在获取请求时向服务器发送cookie,但显然,至少在我正在使用的实现中,如果没有设置它也意味着如果从以下方式发送回来,cookie将不会被保存服务器。

来自https://fetch.spec.whatwg.org/上的规范

请求具有关联的凭证模式,即“省略”,“同源”或“包括”。 除非另有说明,否则为“省略”。

请求的凭据模式控制获取期间的凭据流。 当请求的模式为“导航”时,其凭证模式被假定为“包含”,而获取当前不会考虑其他值。 如果HTML在此处更改,则此标准将需要相应的更改。

凭据是HTTP cookie,TLS客户端证书和身份验证条目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM