浏览器无法读取和发送带有访存API的Cookie,甚至无法将凭据设置为包含在跨源请求中

时间:2018-12-24 05:48:14

标签: reactjs cookies xmlhttprequest google-chrome-devtools fetch

正在获取跨源请求,即使我设置了set-cookie并且服务器提供了以下信息,Chrome也无法读取credentials: 'include'

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://127.0.0.1:3000

chrome

safari

这是一个带有提取API的react(^ 16.6.3)项目

我尝试使用Chrome,Safari,Firefox和移动浏览器,但是所有这些浏览器均无法读取和保存Cookie。在Chrome中,没有Set-Cookie字段,但在Safari和Firefox中存在。

empty cookies

当我使用 postman 对其进行测试时,就可以了,下一个请求将发送cookie。

fetch('http://API_ROOT/api', {
  credentials: 'include',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json; charset=utf-8',
  },
  method: 'POST',
  body: JSON.stringify({})
});

期望浏览器保存并发送cookie。

1 个答案:

答案 0 :(得分:1)

许多其他建议始终会说:设置凭据:“包含” 服务器端Access-Control-Allow-Credentials值为true 。但是我检查了您的代码,并且响应都还可以。

那么cookie可能已过期?

还是您的浏览器禁用了第三方Cookie?

withCredentials MDN

  

第三方Cookie

     

请注意,在CORS响应中设置的Cookie受正常的第三方Cookie政策约束。在上面的示例中,该页面是从foo.example加载的,但是第22行上的cookie是由bar.other发送的,因此如果用户将其浏览器配置为拒绝所有第三方cookie,则不会保存该页面。