Axios-始终发送默认标头

时间:2019-01-16 21:59:57

标签: javascript axios

我有一个应用程序,其中大多数端点使用相同的令牌进行身份验证。因此,当用户登录时,我将使用以下内容:

axios.defaults.headers.common['Authorization'] = 'Bearer ' + user.access_token

但是我有一些端点具有不同的Bearer令牌。在这些情况下,我正在尝试:

axios.get(`${API_BASE}/Config`, { headers: { Authorization: AuthStr } })
  .then(response => {
    if (response.status === 200) {
      commit(HIDE_LOADING)
      resolve(response.data)
    }
  })

AuthStr作为参数传递给该端点,并且是此端点的正确承载令牌。但是,当我调用此方法时,axios将发送在axios.defaults.headers.common['Authorization']上配置的Bearer令牌,而忽略了我的AuthStr令牌参数。

我该如何覆盖?

1 个答案:

答案 0 :(得分:0)

正如@Maaz Syed Adeeb指出的,这是一个轴距错误。我可以按照建议使用以下代码来解决:issue

  axios.get(`${API_BASE}/EndPointThatUserAnotherToken`, getAxiosOptions(AuthStr))
  .then(response => {
    if (response.status === 200) {
      commit(HIDE_LOADING)
      resolve(response.data)
    }
  })

function getAxiosOptions (authToken) {
  let opt = {
    transformRequest: [function (data, headers) {
      delete headers.common.Authorization
      headers.Authorization = authToken
      return data
      }]
    }
    return opt
}