axios 设置请求头之后POST或GET变成了OPTIONS,报错405

时间:2024-03-22 08:13:39

报错如图:
axios 设置请求头之后POST或GET变成了OPTIONS,报错405

首先出现options请求是因为你添加了自定义的请求头,导致你的简单跨域请求变成了复杂跨域的。

本人看了很多相关文章,有的说让后台加什么请求头,不行。让运出来一下,还是可以的。

自己瞎搞搞,发现,有一个请求头其实不需要的,注释了。就再也不会调用options方式请求啦!!!!

import axios from 'axios';
import qs from 'qs';

let instance = axios.create({
    method: 'post', // default
    transformRequest: [function(data) {
        return qs.stringify(data, {arrayFormat: 'brackets'});
    }],
    // `headers` 是即将被发送的自定义请求头
    headers: {
        // 'X-Requested-With': 'XMLHttpRequest', // 就是这个自定义的请求头啊!!!,可以不需要的,注释了哈
        'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',
    },
    timeout: 120000,
    responseType: 'json', // default
});

instance.interceptors.response.use(response => {
    return response;
}, error => {
  // 这里我们把错误信息扶正, 后面就不需要写 catch 了
  return Promise.resolve({
    exception: [error.response.status, error.response.statusText, error.response.request.responseURL].join(" "),
    msg: error.response.statusText,
    data: response.statusText,
  })
});
export default instance;

噔噔, 一切都正常啦!!!若有兴趣的,可以自己研究研究'X-Requested-With': 'XMLHttpRequest'这个属性