reactjs - 正在发送没有授权 header 的 React 请求

标签 reactjs http-headers authorization bearer-token fastify

我正在尝试在我的 header 中将不记名 token 传递给 fastify http 服务器。

我将请求中的标题设置为:

...
const headers = {
  Accept: 'application/json',
  'Content-Type': 'application/json'
}
const token = localStorage.getItem('token')
if (token) {
  headers['Authorization'] = `Bearer ${token}`
}
const newOptions = {
  ...options,
  mode: 'no-cors',
  headers
}
console.log('options:', newOptions)
return fetch(url, newOptions)

我的 console.log 打印:
options: {
  mode: "no-cors", 
  headers: {
    Accept: "application/json",
    Content-Type: "application/json",
    Authorization: "Bearer NQ9xQLmYtq92aT8JHHRd7DGZJ..."
  }
}

在 Chrome 网络选项卡中,我查看标题和 Authorization只是不在那里。我的路由处理函数如下:
async function user(server, options) {
  server.route({
    method: 'GET',
    url: '/user/:email',
    handler: async (req, res) => {
      const username = req.params.email
      console.log('user email:', username)
      console.log('headers:', req.headers)
      res.send({
        type: 'promoter'
      })
    }
  })
}

当我在服务器上打印标题时,它也没有 Authorization ,显示:
headers: { host: 'localhost:5000',
  connection: 'keep-alive',
  pragma: 'no-cache',
  'cache-control': 'no-cache',
  accept: 'application/json',
  'sec-fetch-dest': 'empty',
  'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36',
  'sec-fetch-site': 'same-site',
  'sec-fetch-mode': 'no-cors',
  referer: 'http://localhost:3000/admin',
  'accept-encoding': 'gzip, deflate, br',
  'accept-language': 'en-US,en;q=0.9,ru;q=0.8' }

我错过了什么?

另一个有趣的问题是,当我运行来自 Postman 的请求时它显示 200 响应代码,并且 fastify 打印 200到日志。但是,从传奇/请求运行:
  return fetch(url, newOptions)
    .then(checkStatus)
    .then(parseJSON)

我收到 response.status0而不是 200在请求方法里面,而服务器日志仍然显示 "res":{"statusCode":200} .

最佳答案

我想出了什么问题。

显然,我的 Chrome 版本 - Version 80.0.3987.106 (Official Build) (64-bit)可能还有其他浏览器和旧版本的 Chrome,也会去掉 authorization header ,当它与 no-cors 一起使用时模式。启用 CORS并设置适当的标题可以解决问题。

关于reactjs - 正在发送没有授权 header 的 React 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60339505/

相关文章:

oauth-2.0 - 使用 PKCE 的授权代码流如何比没有 client_secret 的授权代码流更安全

authorization - 如何在 Orion NGSI API 中配置访问控制以使用 Wilma PEP 代理和 IdM Keyrock 进行租户隔离?

javascript - React.js + Flux - 正确初始化存储中的数据对象

javascript - React.js 2 向绑定(bind) : two-levels deep path in valueLink

javascript - 通过组合来自表单的数据和获取 api 响应来发布数据

reactjs - 从 React 子元素获取 DOM 节点

PHP header HTTP 1.0 与 1.1

http - 在查看 X-Auth-Token 与 Authorization header 之间的差异时,哪个是首选?

ios - NSURLSession 将 header 'Connection' 设置为 'Upgrade' 不起作用

ruby-on-rails - 在操作中多次调用渲染和/或重定向