无法在标头请求上设置授权?
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 令牌)授权标头