首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尽管在header/Axios中设置了有效的JWT,但来自axios的Post请求始终返回Unauthorized

尽管在header/Axios中设置了有效的JWT,但来自axios的Post请求始终返回Unauthorized
EN

Stack Overflow用户
提问于 2021-08-30 00:28:11
回答 2查看 61关注 0票数 0

我设置passport-local来登录用户,一旦登录,将通过passport-JWT为用户提供一个JWT令牌。JWTStrategy被设置为使用jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),以便JWT可以与Authorization header Authorization: `Token ${userContext.token}`}一起发送。在我的react客户端,我使用axios设置了一个GET请求,如下所示:

代码语言:javascript
运行
复制
const fetchProfileDetails = async(config)=>{
    const res = await axios.get("http://localhost:8080/users/me", config)
}

    const config = {
        method:"GET",
        withCredentials: true,
        headers: {Authorization: `Bearer ${userContext.token}`}
    }

此请求成功通过身份验证并从/me返回用户数据。

现在重点来了:当我使用完全相同的请求结构,但在axios请求和后端的express路由中将方法切换为post时,请求总是以401 Unauthorized作为响应。

但是,当我从POSTMAN发送相同的请求时,使用未经授权的请求中使用的相同的持有者令牌,请求成功,没有任何错误。

TLDR: GET请求使用JWT令牌并返回200状态代码,而使用POST方法的相同请求返回401状态代码。

我错过了什么??!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-30 18:41:50

我想出了一个解决这个问题的办法。由于某些原因,axios没有维护我在配置变量中设置的Authorization头,并在发出请求时将其删除。为了解决这个问题,我只需要重新调整我的axios请求,使其看起来像这样:

代码语言:javascript
运行
复制
const res = await axios({
    method:'POST',
    url:"http://localhost:8080/users/test",
    headers:{'Authorization':`Bearer${token}`
  
  }})

我觉得自己被骗了,因为我花了大量的时间在这上面,而解决方案却如此平淡无奇。Axios一直在骗我:/

票数 0
EN

Stack Overflow用户

发布于 2021-08-30 05:53:03

您可能正在使用那里的GET,而不是使用POST anywhere。在您的代码中,只有get的代码。您还需要为post编写代码。下面是post的代码,供您参考:

代码语言:javascript
运行
复制
router.post('/', config, async(req, res, next) => { 
    const { error } = validateBody(req.body);

    if (error) {
        return res.status(400).send(error.details[0].message);
    }    
    const newData= new passport({ name: req.body.name });    
    await newData.save();
    console.log('saving the document');
    res.send(newData);
})

你的代码也应该有post。编写单一的代码是行不通的。你需要为每种情况和每种可能性编写代码。因此,就像get也需要post代码一样,如果你有patchdeleteput的条件,你也必须为它编写axios方法。

希望这对你有任何帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68977915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档