axios 创建实例后 put 请求时无法携带设置的请求头

在创建axios实例代码之后,分别设置了post,put,同时设置了共通请求头application/x-www-form-urlencoded;charset=UTF-8.使用post请求携带了自定义设置的请求头,但是使用put后,请求就不会携带设置的请求头。并且出现了跨域的问题.
代码如下:

const instance = axios.create({
baseURL: process.env.BASE_API,
timeout: 5000,
withCredentials: true,
headers: {
'content-type': 'application/x-www-form-urlencoded;charset=UTF-8'
}
})

function put (url, putData) {
return instance.put(url, qs.stringify(putData))
}

function post (url, postData) {
 return instance.post(url, qs.stringify(postData))
}

export default {
 get: get,
 post: post,
 put: put
}

post的请求
clipboard.png
put请求
clipboard.png

阅读 6.8k
3 个回答

我估计是axios封装的post,put方法里面也设置请求头,你试一下不用封装的方法,直接用axios()试试

这个不是put的请求头 是options的请求头
当请求是put所以已经不是非简单请求了 要先发送一个预检的options请求
看见有个字段 Access-Control-Request-Method: PUT 这句话就是问服务器是否支持PUT的跨域请求

PUT方法不属于简单请求, 浏览器会先发一次options, 询问服务器

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题