vue与django跨域问题

问题出现环境:使用vue cli工具进行前端开发,在组件中使用axios向 django 服务器发起get请求

vue cli 服务器地址为http://192.168.11.156:8080/#/

请求的目的地址为http://192.168.11.156:8000/polls/home

vue cli工具服务器默认使用8080端口,django 默认使用8000 端口,端口不一致,所以跨域

解决方案:

方案1:

在vue cli创建的项目根目录创建vue.config.js

module.exports = {
  devServer: {
    proxy: 'http://192.168.11.156:8000'
  }
}

proxy字段的值即是请求的目的IP和端口号,

前端组件的请求格式如下:

let url="/polls/home"
	let params=null
	this.$axios.get(url,params).then(res=>{
		console.log(res)
		this.data=res.data
	}).catch(err=>{
		console.log(err)
	})

url的值即为请求目的IP的路由部分

方案2:

在vue cli创建的项目根目录创建vue.config.js

module.exports = {
	devServer: {
		proxy: {
			'/api': {
				target: 'http://192.168.11.156:8000',
				ws: true,
				changeOrigin: true,
				pathRewrite: {
					'^/api': '/polls'
				}
			},
			'/foo': {
				target: '<other_url>'
			}
		}
	}
}

proxy字段为路由代理的具体设置

‘/api’的target字段为路由转换的目标ip与端口号

pathRewrite字段为路径重写

前端组件的请求格式如下:

let url="/api/home"
	let params=null
	this.$axios.get(url,params).then(res=>{
		console.log(res)
		this.data=res.data
	}).catch(err=>{
		console.log(err)
	})

这里的url和刚才的有所不同,在解析路由时,会将‘/api’解析为‘polls’,因为我们已经通过pathRewrite字段进行了路由重写

 

以上只是本在在遇到跨域问题后,经过百度搜索自己总结的一些拙见,如有不正,希望大家指教,

更多资料在以下链接:

https://github.com/chimurai/http-proxy-middleware#proxycontext-config

https://cli.vuejs.org/zh/config/#devserver-proxy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值