我目前使用express-jwt设置并使用Auth0。如果您在curl或postman中指定授权令牌,则页面会正确加载。如果你使用浏览器,express-jwt中间件说没有提供令牌,如果我检查请求头,则没有任何auth头。
真的让我对此感到困惑,谢谢 〜顺便跑步快递
**编辑,添加了我一直在使用的代码。不确定还有什么必要。它只是一个简单的反应应用程序与JWT auth。
exports.getTokenData = async function (req) {
try {
if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
let token = req.headers.authorization.split(' ')[1];
if (!token) return false;
let res = await axios({
method: 'get',
url: 'https://xelitexirish.eu.auth0.com/userinfo',
headers: {Authorization: `Bearer ${token}`}
});
return res.data;
} else return false;
} catch (err) {
console.error(`Unable to fetch jwt data, Error: ${err.stack}`);
}
};
由于
答案 0 :(得分:0)
浏览器只会为任何给定的HTTP请求发送“标准”标头 - 我的意思是,当你在Postman / cURL中添加标头时,你明确地告诉HTTP客户端(Postman / cURL)发送这个带有请求的标头。当您在浏览器上打开URL时,没有人告诉浏览器它应该发送带有请求的自定义标头。
您可以通过在Chrome上安装mod_header并为浏览器请求添加自定义标头来临时工作 - 但在实际应用中,令牌通常存储在Cookie中,或者存储在Cookie中localStorage的。