axios跨域

我在main.js中已经设置了

axios.defaults.withCredentials=true;
axios.defaults.crossDomain=true;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

然后我在一个组件中用到了axios,项目上需要携带cookie过去,大致函数如下

this.$axios.post('http://pj.dianmila.com/supersolid/supersolid_api.php?a=list',{offset:self.swiperlen},{headers: {'Content-Type':'application/x-www-form-urlencoded'}}).then(function(res) {
                        var datajson = res.data;
                        if(datajson.state == 1) {
                            for(let i in datajson.list) {
                                self.swiper.off('reachEnd')
                                self.swiperlist.push(datajson.list[i])
                                self.swiperlen++;
                            }
                        } 
                    }).catch(function (error) {
                    alert('未能与服务器连接,请稍后尝试')
                console.log(error);

然后在不传参数的情况下是可以不写后面的headers设置的,但是一旦我带了参数进去,全局设置的headers就无效了,一定要加上后面的headers才能传过去,而且即使传过去了,调试里面看到是{offset:5}:
会无缘无故多了个:服务器识别不了,求大神解答

问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

题目描述

题目来源及自己的思路

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 4k
1 个回答

正常对应的是content-type: application/json;charset=UTF-8
解决方案就是加上transformRequest自己处理一下数据,我选择使用qs处理,地址

axios.post('http://pj.dianmila.com/supersolid/supersolid_api.php?a=list',{offset:1},{
  headers: {'Content-Type':'application/x-www-form-urlencoded'},
  transformRequest: [function (data) {
    return Qs.stringify(data)
  }],

  }).then(function(res) {
    console.log(res)
  }).catch(function (error) {
    console.log(error);
  })





clipboard.png

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