webpack中使用代理proxy解决端口跨域问题

需求场景

前后端分离,本地服务端使用了8762接口,而我前端dev环境使用9000端口,这时候如果请求8762端口的数据接口,很明显会由于跨域的问题而请求失败,如果让后端做允许开发有麻烦,怎么办呢?

解决方案

随着前端技术的发展,es6以及前端构建工具都成了主流技术,不会用都不好意思出来混了。平时用webpack时用的比较多的本地服务器是webpack-dev-server,刚好它自身集成了代理功能,只要在webpack.dev.config.js里的devServer配置里,加上一段代理配置就能实现跨域了。

使用方法与代码

配置前的devServer代码是:

devServer:{
    contentBase: path.join(__dirname,'./release'),
    open:true,
    port:9000
},

这时候我们的服务器端口为9000,假设我们原先的请求方式是这样的:

axios.get('http:localhost:8762/distribution/pageList').then(function(response){
	console.log(response)
})

由于端口不一样,跨域报错是必然的。怎么配置呢?这时候我们要看接口的规律,例如我们这个接口并没有/api,而是有/distribution这个路径,那我们就把所有包含/distribution的请求反向代理到localhost:9000去,可以这样改:

devServer:{
    	contentBase: path.join(__dirname,'./release'),
    	open:true,
    	port:9000,
    	proxy: {
            '/distribution': {
                target: 'http://localhost:8762'
            }
        }
    }

这时候我们再把请求改成这样:

axios.get('/distribution/pageList').then(function(response){
	console.log(response)
})

这时候我们浏览器控制台里看到的请求是:http://localhost:9000/distribution/pageList,但实际请求是:http:localhost:8762/distribution/pageList,再测试下,这时候会发现数据正常返回,没有报跨域错误了。

搞定,感谢阅读

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值