Axios不在补丁上发送标头,而是在get-requests上发送标头

时间:2017-12-01 10:25:19

标签: vue.js axios

我正在制作一个使用Axios的网络应用。 我有一个基本服务类,它有一个拦截器,可以为每个请求添加访问令牌。但是,拦截器不会在我的PATCH请求上添加令牌,只能在GET请求上添加。

我的基础api服务

import axios from 'axios'

export default class api {

  constructor (path) {
    this.api = axios.create({
      baseURL: 'http://localhost:1337/' + path
    })

    this.api.interceptors.request.use(config => {
      config.headers['x-access-token'] = localStorage.getItem('jwt-token')
      return config
    })

    this.api.interceptors.response.use(undefined, (err) => {
      if (err.response.status === 401) {
        throw err
      } else {
        throw err
      }
    })
  }
}

扩展基础的服务

import Api from './api'

export default class ProfileService extends Api {
  constructor () {
    super('profile/')
  }

  me () {
    return this.api.get('/me')
  }

  updateProfile (uuid, data) {
    return this.api.patch('/' + uuid, data)
  }

}

如果我像这样建立一个全局拦截器,Axios会将令牌添加到PATCH请求中:

axios.defaults.headers.common['x-access-token'] = localStorage.getItem('jwt-token');

我不想这样做,因为它也会将令牌发送到其他服务器。

为什么我的拦截器在每个实例指定时不会添加令牌的任何想法?这是Axios的错误吗?

OPTIONS-request具有以下标题:

Access-Control-Allow-Headers:x-access-token,X-Requested-With,Content-Type,Accept,Authorization,Origin
Access-Control-Allow-Methods:GET,PUT,POST,PATCH,OPTIONS

提前致谢,

阿克塞尔

0 个答案:

没有答案