没有使用GET请求发送Auth标头

时间:2018-03-06 23:38:46

标签: node.js authentication jwt express-jwt

我目前使用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}`);
}

};

由于

1 个答案:

答案 0 :(得分:0)

浏览器只会为任何给定的HTTP请求发送“标准”标头 - 我的意思是,当你在Postman / cURL中添加标头时,你明确地告诉HTTP客户端(Postman / cURL)发送这个带有请求的标头。当您在浏览器上打开URL时,没有人告诉浏览器它应该发送带有请求的自定义标头。

您可以通过在Chrome上安装mod_header并为浏览器请求添加自定义标头来临时工作 - 但在实际应用中,令牌通常存储在Cookie中,或者存储在Cookie中localStorage的。