【问题标题】:Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response. (node, react, axios)预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段授权。 (节点,反应,axios)
【发布时间】:2018-08-13 04:38:20
【问题描述】:

这是在我的 server.js 中:

app.use(helmet())
app.options('*', cors())
app.use(function (req, res, next) {
  res.setHeader('Access-Control-Allow-Origin', '*')
  res.setHeader('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE,OPTIONS')
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type,Cache-Control')
  if (req.method === 'OPTIONS') {
    res.sendStatus(200)
  } else {
    next()
  }
})

我有一个基本的 node/webpack/react 情况。我正在使用 axios 在客户端提出我的请求。我知道这个请求是可靠的,因为我已经单独测试过它。我还尝试了我找到/能想到的Access-Control-Allow-xxxxx 的所有组合。它必须与这个中间件有关。任何帮助/见解将不胜感激!

【问题讨论】:

  • Authorization 添加到Access-Control-Allow-Headers 时会发生什么?
  • 代替res.setHeader试试res.header

标签: node.js reactjs


【解决方案1】:

我假设您正在尝试从您的客户端向 express/node 服务器进行 api 调用,是吗?您是否尝试过使用代理?

尝试将服务器的端口设置为类似 localhost:5000。那就试试吧

app.use(cors()) 

而不是

app.options('*', cors())

然后回到你的客户端,在你的 React package.json 中简单地添加一个代理

  },
  "proxy": "http://localhost:5000"

或您的服务器所在的任何端口。

这应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 2021-08-12
    • 2017-12-02
    • 2016-05-15
    • 2017-10-20
    • 2017-11-28
    • 2017-10-28
    • 2017-10-15
    • 1970-01-01
    相关资源
    最近更新 更多