无法在标头请求上设置授权?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在标头请求上设置授权?相关的知识,希望对你有一定的参考价值。

我的快递服务器上已有此代码:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Authorization");
  next();
});
app.use('/graphql', graphqlExpress(async(req) => {
  let {user} = await getUser(req.headers.authorization);
  return ({
    schema,
    pretty: true,
    graphiql: true,
    context: {
      user
    }
  })
}))

我认为这是cors问题所以我在本教程中使用了express-crsxswpoi的enable-cors

这段代码是我处理提取的方式:

https://enable-cors.org/server_expressjs.html

但是,即使用户登录后已有令牌,发送给服务器的授权也始终为空?

答案

let token = localStorage.getItem('token'); const fetchQuery = (operation, variables) => { return fetch('/graphql', { method: 'POST', credentials: 'same-origin', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization': token, }, body: JSON.stringify({query: operation.text, variables}) }).then(response => { // A better error message for request timeouts if (response.status === 504) { return Promise.reject({ error: { message: 'Request timed out' } }) } return response.json() }).then(responseJson => { // https://github.com/facebook/relay/issues/1816 // https://github.com/facebook/relay/issues/1913 if (responseJson.errors) { return Promise.reject(responseJson.errors[0]) } return Promise.resolve(responseJson) }) } 没有执行,可能是由于localStorage.getItem("token")是一个I / O操作,以及导出如何工作。把它移到getItem里面

fetchQuery

以上是关于无法在标头请求上设置授权?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android OKHTTPClient 请求上设置(OAuth 令牌)授权标头

如何在 Android OKHTTPClient 请求上设置(OAuth 令牌)授权标头

获取 API:无法使用 Chrome 对请求标头添加授权

如何设置授权标头(JWT)

如何将承载令牌添加到 HTTP 请求的标头?

无法使用授权标头执行发布请求