如何在 Axios 中传递 Bearer 令牌

Posted

技术标签:

【中文标题】如何在 Axios 中传递 Bearer 令牌【英文标题】:How pass a Bearer token in Axios 【发布时间】:2019-08-30 14:30:43 【问题描述】:

今天早上我在寻找答案并尝试了很多方法,但我的 axios API 调用总是失败并出现 401 错误。

此外,如果我从控制台或邮递员尝试 curl 请求有效,但我不明白为什么在我前面使用 vue 和 axios 它失败了。

我尝试在全局范围内传递承载,然后是一条独特的路线

首先我为 Axios 配置了我的模块

export default() => 
  return axios.create(
    baseURL: process.env.VUE_APP_API,
    headers:  
        'Content-Type': 'application/json',
        Authorization: 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyIn0.wxYD9dllTqT1gAIBmwo35Z4Q4qmlDZwXqz9FdYqXZnU'
    
  )

那我有我的要求了

Api().get(`user-profiles/$id`).then(function (response) 
        return(response)
      )

请求是这个:

Request URL: https://***
Request Method: OPTIONS
Status Code: 401 
Remote Address: ****
Referrer Policy: no-referrer-when-downgrade
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Location
Provisional headers are shown
Access-Control-Request-Headers: authorization
Access-Control-Request-Method: GET
Origin: http://localhost:8080
Referer: http://localhost:8080/login
User-Agent: Mozilla/5.0 (Linux; android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/73.0.3683.86 Mobile Safari/537.36

您需要其他数据吗? 如果我不使用 Bearer 令牌,则该请求有效...

我需要传递 Bearer 令牌,因为对于生产版本,我无法取消 Bearer。

提前感谢您的帮助。

【问题讨论】:

试过这种方式吗? => axios.defaults.headers.common['Authorization'] = '承载 eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyIn0.wxYD9dllTqT1gAIBmwo35Z4Q4qmlDZwXqz9FdYqXZnU' 按 F12 打开 Chrome DevTools,然后转到 Network 选项卡并按 XHR 类型过滤请求。然后看看Axios实际发送了什么。 @Riddhi 不幸的是已经尝试过,但它不起作用 @IVOGELOV 我在帖子中添加了网络中的请求......但这对我没有帮助;( 【参考方案1】:

经过一番搜索,我找到了解决方案... 您需要使用 cors 策略授权后端... 在我自己的 node js 后端上工作......我等待修复 java api 后端;)

【讨论】:

【参考方案2】:

How to set header and options in axios?

就像这里在最佳答案中提到的,你应该去

export default() => 
  return axios.create(
    baseURL: process.env.VUE_APP_API,
    headers:  
      'get': 
        'Content-Type': 'application/json',
        Authorization: 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyIn0.wxYD9dllTqT1gAIBmwo35Z4Q4qmlDZwXqz9FdYqXZnU'
      
    
  )

【讨论】:

我刚才试过你的建议,但还是同样的问题,我不明白为什么。

以上是关于如何在 Axios 中传递 Bearer 令牌的主要内容,如果未能解决你的问题,请参考以下文章

在 WebAPI 的查询字符串中传递和验证 OWIN Bearer 令牌

如何正确使用 Bearer 代币?

Bearer 用于身份验证令牌,但用于不同的令牌?

在 cookie 中存储 Bearer 令牌的安全性

我如何在 Axios 中传递 cookie

如何在 NodeJs 中使用 .pfx 证书和密码验证 Bearer 令牌?