axios设置get请求Content-Type='application/json;charset=UTF-8'无效
在vue2.0中使用了axios库,设置请求头Content-Type='application/json;charset=UTF-8'无效
axios.defaults.headers.common['Content-Type'] = 'application/json;charset=UTF-8'
还尝试了
http.get(http.api.url, {
params: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
也是没有起作用。
这是请求截图
期望效果是这样
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
是个 bug,半年都没修好
https://github.com/mzabriskie...
里面有折衷解决方案
//use params instead of data
//用 params 代替 data
Axios的源码对get请求的content-type处理过了
所以需要在拦截器里处理一下get请求
设置application/json;charset=UTF-8 是可以的 你得可能是跨域了 然后option请求没看出来
前面以为给了我一下参考 感谢~! 一下是我琢磨出来的答案 ,亲测有效
不多说,可用demo:
缘由
最开始 报400
调整 params,通过 transformRequest 函数。
因为后端是一个vo对象,且是requestBody接受,所以发送之前将参数转成JSON格式。
如果直接写,如: params:{JSON.stringify(param)},我试了 ,没用
传到会面的数据依旧是0:{...},这种键值对的写法,而不是
这种写法,transformRequest巧妙的在最后发送前转成你想要的,这一点很重要!
接着 415
在调整 content-type
你需要把这个设置写在
request interceptor
内注意:
application/json; charset=UTF-8
中间需要有空格。标准的 GET 请求是不带 body 的,所以 Content-Type 应该也没什么用。
GET方法不用限制Content-Type,服务器端调整一下就可以了
我是在POST提交时遇到的,我的解决办法是将参数格式化做了一个非空判断,如果是空,怎返回空串,如下
//请求参数格式化
http.defaults.transformRequest = [params => {
if (params != null) {
}else {
}
}];
然后就解决了。。。
怎么解决的啊?我们也是因为接口需要....
这个问题解决了吗?我现在也碰到这个问题了