【问题标题】:How to fetch react-cookies if CORS is blocking it如果 CORS 阻止它,如何获取 react-cookies
【发布时间】:2020-02-21 14:04:43
【问题描述】:

我正在使用react-cookies,我想将它从客户端获取到服务器端。问题是当我在NodeJS 中打印请求时,我在header 和其他任何地方都看不到任何cookie。我不确定是否没有发送 cookie。

我已阅读我无法自动获取 cookie,我需要添加 {credentials:'include'}{credentials:'same-origin'}。我都试过了,没有出错。我读过它可能与CORS 政策有关。

fetch(url, {
    method: 'POST',
    // credentials: 'include',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
       body: JSON.stringify(user)
});

您能否告诉我如何检查cookies 是否已发送,如果是,在哪里可以找到cookies,或者如果它没有发送cookie 如何解决它。

【问题讨论】:

标签: node.js reactjs api cookies fetch


【解决方案1】:

要允许带有凭据的 CORS 请求,您必须让 express 做两件事:

  • 发送与window.origin 匹配的值的'Access-Control-Allow-Origin' 标头(不能是通配符'*'
  • 发送'Access-Control-Allow-Credentials' 标头,其值为'true'

两者都可以通过将选项对象传递给cors来完成:

app.use(cors({
  origin: true,
  credentials: true
}))

【讨论】:

  • 谢谢,我还有一个问题。如何检查 cookie 是否已发送?目前我正在处理登录页面。有没有办法检查请求中是否有cookie?
  • @Seda 将 console.log(request.headers.cookie) 放入路由处理程序
  • @Seda 很可能您没有设置任何 cookie。你如何设置cookies?
  • 我已经尝试了这两个选项:{credentials: 'include'}, {credentials: 'same-origin'}。这就是我设置cookie的方式。我没有看到任何其他方式,请告诉我是否有一个
  • @Seda 这就是您发送 cookie 的方式(您应该使用 {credentials: 'include'})。但是,您如何为该外部域设置 cookie? document.cookie?
猜你喜欢
  • 2017-08-31
  • 2021-06-20
  • 2016-11-03
  • 2021-09-17
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
相关资源
最近更新 更多