axios动态设置默认标头

时间:2017-10-30 16:40:46

标签: javascript axios

我想设置一个随每个请求发送的标头:

axios.defaults.headers.common = {
    Accept: 'application/json',
    'X-CSRF-TOKEN': store.state.csrf
};

仅在页面加载时评估。我希望它是动态的,因为csrf值可能会在以后更改。类似的东西:

axios.defaults.headers.common = {
    Accept: 'application/json',
    'X-CSRF-TOKEN': () => store.state.csrf
};

然而,这不起作用。

3 个答案:

答案 0 :(得分:3)

您可以随时覆盖/扩展默认值:

// set defaults...

// do requests...

// overwrite CSRF token
axios.defaults.headers.common['X-CSRF-TOKEN'] = store.state.csrf;

// do more requests...

或者你可以change the defaults only for a certain instance

答案 1 :(得分:1)

我建议您在发送这样的请求之前在拦截器中执行此操作:

axios.interceptors.request.use(function (config) {
    config.headers.common = {...config.headers.common, "X-CSRF-TOKEN": () => store.state.csrf}
    return config;
}, function (error) {
    // Do something with request error
    logger.error(error);
    return Promise.reject(error);
  });

答案 2 :(得分:0)

您可以在请求数据之后传递动态标头作为参数。

     let config = {
         'X-CSRF-TOKEN': store.state.csrf
     }
     axios.post(url, requestData, config)