axios 发送 post 请求时, 出现了参数后台接收不到的情况, 分析了下请求, 发现是请求头 content-type 不对, 是 application/json, 正常应该是 application/x-www-form-urlencoded
解决方法有以下三种:
1 设置 axios 的默认请求头
- // 设置全局的
- axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- var instance = axios.create({}) // 这样创建出来的 只需要:
- instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
2 使用 URLSearchParams 来构建参数
- var params = new URLSearchParams();
- params.append("username", _this.username);
- params.append("password", _this.password);
- axios.post("/service/login", paramsOfJson
- ).then(function (response) {
- console.log(response);
- }).catch(function (error) {
- console.log(error);
- })
3 后台使用 @requestBody 接收
- @PostMapping(value = "/login")
- public String testLogin(@RequestBody Map dataMap)
来源: http://www.jb51.net/article/135916.htm