跨域处理以及后台返回400处理

vue的跨域问题

新公司的第一个需求。
post请求,我的后台给我的是requests.post(‘http://xx.xx.x.xx:xxxx/v1/lyrics/christmas_lyrics’, data={‘sender’: ‘我’, ‘receiver’: ‘你’})
直接在项目中下载axios之后(记得在main.js里引入axios)

axios.post('http://xx.xx.x.xx:xxxx/v1/lyrics/christmas_lyrics',{
	sender: this.sender,
	receiver: this.recever
}).then((res) => {
	console.log(res.data);
}).catch((error) => {
	console.log(error);
})

这样会提示Access-Control-Allow-Origin(跨域)Access-Control-Allow-Origin
所以现在要解决跨域,查了好几个解决办法,发现都是差不多的套路。

1

config->index.jsl里找到proxyTable
在里面添加

proxyTable: {
      '/api' : {
        target: 'http://xxx.xx.x.x:xxxx',
        changeOrigin: true,
        secure: false,//如果地址为https的话,设置为false
        pathRewrite: {
          '^/api': '/'
        }
      }
    }
2

在组件中

axios.post('api/v1/lyrics/christmas_lyrics', {
	sender : this.sender,
    receiver : this.receiver
}, {
      headers : {
            "content-type": "application/x-www-form-urlencoded"
          }
        }).then((res) => {
          this.Lyrics = res.data.lyrics;
        }).catch((error) => {
          console.log('error', error);
        })

这样跨域问题就解决了。

我这里还是有别的问题,我这里显示是400,后台说我的请求过去了,但是他没有拿到我传递过去的参数,所以给我返回了400.
于是乎,我开始检查我的请求出现了什么问题。
400的问题是参数格式不对,我这里的问题是类似于乱码问题。
解决方案是
1
下载qs模块 npm install qs --save (记得在项目中引入)
2
对参数处理一下

axios.post('api/v1/lyrics/christmas_lyrics', qs.stringify({
	sender : this.sender,
    receiver : this.receiver
}), {
          headers : {
            "content-type": "application/x-www-form-urlencoded"
          }
        }).then((res) => {
          this.Lyrics = res.data.lyrics;
        }).catch((error) => {
          console.log('error', error);
        })

这样就拿到了想要的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值