Fork me on GitHub

vue axios post 请求

vue 集成 axios 之后,发送的 post 请求默认为 payload 方式。 如果想改为正常的方式,需要将发送的数据修改为 form data 的方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cnpm install qs
import Qs from 'qs'
将 post 请求发送的 params 替换为 Qs.stringify(params)
可以统一写到 axios.js 里:
axios.interceptors.request.use(
config => {
// post data Object -> form data
if(config.method == "post" && config.data){
config.data = Qs.stringify(config.data);
}

return config
},
error => {
return Promise.reject(error)
}
)
1
2
3
4
5
6
也可以手动转为 formData
let formData = new FormData();
Object.keys(params).forEach((key) => {
formData.append(key, params[key]);
});
params = formData;

接口返回 header 问题

1
2
3
如果报错 Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.
需要接口返回加 header:
Access-Control-Allow-Headers: Content-Type
-------------感谢您的阅读 有问题请留言(或mailto:frostbelt@sina.cn)-------------