【问题标题】:Auth header not being sent with GET requestsAuth 标头未与 GET 请求一起发送
【发布时间】:2018-08-14 23:02:06
【问题描述】:

我目前有 express-jwt 设置并使用 Auth0。如果您在 curl 或 postman 中指定授权令牌,则页面会正确加载。如果您使用浏览器,express-jwt 中间件会说没有提供令牌,如果我检查请求标头,则没有任何身份验证标头。

真的让我大吃一惊,谢谢 ~ 顺便跑个快递

**edit,例如添加了我一直在使用的代码。不知道还有什么必要的。它只是一个带有 JWT auth 的简单 React 应用程序。

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}`);
}

};

谢谢

【问题讨论】:

  • 分享一些代码就好了
  • Auth0 Dev 在这里,你不应该调用/userinfo 只是为了获取用户信息和验证令牌,JWT 使用规范隐式验证并且可以被解码。

标签: node.js authentication jwt express-jwt


【解决方案1】:

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

您可以通过在 Chrome 上安装 mod_header 并为浏览器请求添加您的自定义标头来临时实现此功能,但在现实世界的应用程序中,令牌通常存储在 cookie 或 localStorage 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-13
    • 2021-11-03
    • 1970-01-01
    • 2018-02-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多