使用 Axios 发布请求的 JWT 授权

Posted

技术标签:

【中文标题】使用 Axios 发布请求的 JWT 授权【英文标题】:JWT authorization using Axios post request 【发布时间】:2020-02-11 15:35:54 【问题描述】:

我收到了一个存储在本地的 JWT。使用相同的 JWT,我正在尝试发出 POST 请求,但是我收到 401 错误,以及显示“未提供 JWT”的错误。我知道 JWT 是有效的,因为我已在 GET 请求中成功使用它。

axios
    .post("https://example.com", 
      headers: 
        token:
          "abc"
      ,
      solutions: 
        solution: answer
      
    )
    .then(response => 
      console.log(response.data);
    )
    .catch(error => 
      console.log(error.response);
    );
;

编辑: 我正在为我的 GET 请求添加代码作为参考。

axios
  .get("https://example.com", 
    headers: 
      token:
        "abc"
    
  )
  .then(function(response) 
    // makeResponse(response.data);
    console.log(response.data);
  )
  .catch(function(error) 
    console.log(error);
  );

谢谢!

【问题讨论】:

headers: token - 服务器是否在名为令牌的标头中查找 JWT?服务器是你的服务器吗? @Bravo 服务器确实在称为令牌的标头中查找 JWT。这不是我的服务器,而是商业服务器。我使用相同格式发出 GET 请求并获得成功,但我的 POST 请求不起作用。 那么,您已经使用 token 标头中的 JWT 令牌发出了 GET 请求,而这正是 GET 请求需要的地方? @Bravo 是的,没错。我使用的 API 指定我需要为每个请求附加一个 JWT 到一个名为“token”的标头。 【参考方案1】:

您的 axios.post 可以接受 3 个参数。第一个是端点,第二个是有效负载,第三个是配置或存储令牌的位置。

axios.post(endpoint, payload, config)

我认为您的设置顺序错误:

axios
    .post("https://example.com", 
      headers: 
        token:
          "abc"
      ,
      solutions: 
        solution: answer
      
    )

这应该是:

axios
    .post("https://example.com", 
      solutions: 
        solution: answer
      ,
      
         headers: 
           token: "abc"
         
      
     )

【讨论】:

是的,这是我的问题。谢谢!

以上是关于使用 Axios 发布请求的 JWT 授权的主要内容,如果未能解决你的问题,请参考以下文章

使用 Axios 和 Vue.js 进行 JWT 授权(标题)

当 axios 在 React 中请求时,Ruby on Rails 的标头中不包含授权令牌,但它可以与 Postman 一起使用

如何在axios中配置授权承载令牌?

在 react-native 中发送请求标头/授权 axios.post

在vue中使用axios的Cors和预检错误

找不到 Slim jwt 令牌(由 axios 请求发送)