为什么浏览器会忽略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,即使在通过Ajax使用fetch api进行GET调用时服务器返回了有效的set-cookie响应
如果我通过在浏览器中放置URL来进行相同的GET调用,则浏览器会尊重(相同的)set-cookie响应头并保存cookie。
我已经通过LiveHeaders和Chrome网络检查器检查了请求和响应头,没有区别。
编辑:澄清一下,这不是ajax发送cookie到服务器的问题。这是一个问题,当响应返回有效的set-cookies头(根据文档,无论ajax与否,都应该尊重)时,浏览器根本不保存cookie。经过一番努力,我通过将请求的'credentials'属性设置为'include'来解决这个问题。在我的印象中,这只控制在获取请求时向服务器发送cookie,但显然,至少在我使用的实现中,如果不设置,它也意味着如果从服务器发送回来,cookie将不会被保存。
来自https://fetch.spec.whatwg.org/
的规范请求具有关联的凭据模式,该模式为"省略"同源"或"包含"。除非另有说明,否则为"省略"。
请求的凭据模式控制凭据流取回。当请求的模式为"navigate"时,其凭据模式为假定为"包含";fetch目前没有考虑到other值。如果HTML在这里发生了变化,这个标准将需要相应的修改变化。
凭据是HTTP cookie、TLS客户端证书和身份验证条目。
相关文章:
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Javascript/jQuery中的并行Ajax调用
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- node.js请求数据事件未在CORS ajax调用中触发
- 如何从ajax调用返回.wrap()元素
- Ajax调用在Firefox中不会自动响应
- AJAX调用中的非法调用
- 使用AJAX调用将GeoJSON数据拉入传单
- 在MVC 4中,对Controller的Ajax调用为空
- Jquery:对返回JSON数据的php脚本的Ajax调用
- 在ajax调用中阻止来自JS对象的函数
- 如何在MVC5中ajax调用的部分视图中引用外部javascript
- 页面加载后的Ajax调用
- 如何使用Ajax调用特定的控制器和操作来重定向用户
- curl和fileget_contents在ajax调用后不起作用
- 在任何AJAX调用之前触发一个javascript函数
- 无法在mvc视图中使用ajax调用获取操作返回的模型对象列表
- Ajax调用ERror Cross Origin REquest:在rails中自动完成大学列表
- ASP.NET MVC 3-在ajax调用后,重定向到新页面或生成页面刷新
- 点击功能没有'ajax调用动态元素(Backbone)后无法工作