axios跨域非简单请求options问题

2,747 阅读1分钟

当 axios 的请求为非简单请求时,浏览器会进行预检,即发送 OPTIONS

请求到服务器,询问是否允许跨域。如果响应中允许你的预检中请求的跨域行为,则浏览器会进行真正的请求。否则,会报 405 错误。

解决办法:

设置拦截器, 把content-type 设置成application/x-www-form-urlencoded, 降级为简单请求, 就不会发送options请求。

注意如果是post方法, 需要qs模块转换一下参数

return new Promise((resolve) => {
      axios({
        method: 'post',
        url,
        data: qs.stringify(param),
        headers:{
        	'Content-Type': 'application/x-www-form-urlencoded'
        },
      }).then(res => {
        beforeResolve(res)
        resolve(res)
      })
    })