vue项目配置代理解决跨域问题

本文介绍了前端跨域的概念及其由JavaScript同源策略引起的限制。在Vue项目中,通过设置proxy代理可以在开发阶段解决跨域问题。代理的工作原理是将前端请求转发给本地服务器,再由服务器转发到目标API。文章详细讲解了两种配置方法:方法一是简单的全路径代理,而方法二则支持多个代理和更灵活的控制。通过在vue.config.js文件中设置proxyTable,可以实现对不同API的代理配置。
摘要由CSDN通过智能技术生成

Vue项目配置代理

前端向服务器发送请求时,经常会遇到跨域问题,那么什么是前端跨域呢?在vue项目中如何利用代理解决呢?

什么是跨域?

  • JavaScript同源策略:当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。不同域之间相互请求资源,就算作“跨域”。同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。**同源策略限制:**表单提交、AJAX请求等。
  • 注意:跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。

proxy代理解决跨域

  • **原理:**浏览器是禁止跨域的,但是服务端不禁止,在本地运行npm run serve等命令时实际上是用node运行了一个服务器,因此proxyTable实际上是将请求发给自己的服务器,再由服务器转发给后台服务器,做了一层代理,因此不会出现跨域问题。

配置(vue.config.js)

  • 方法一

    • 优点:配置简单、请求资源时直接发给前端(8080)即可
    • 缺点:不能配置多个代理,不能灵活的控制请求是否走代理
    • 当请求了前端不存在的资源时,该请求会转发给服务器(优先匹配前端资源)
 module.exports = {
     devServer: {
             proxy: 'http://localhost:5000',
     }
 }
  • 方法二

    • 优点:可以配置多个代理,且可以灵活的控制请求是否走请求
    • 缺点:配置繁琐,请求资源时必须加前缀
module.exports = {
    devServer: {
        proxy: {
            "/api": {
                target: 'http://localhost:5000',
                pathRewrite: { '^/api': '' },
                ws: true,//用于支持websocket
                changeOrigin: true
            },
            "/allCar": {
                target: 'http://localhost:5001',
                pathRewrite: { '^/allCar': '' },
                ws: true,
                changeOrigin: true
            }
        }
    }
}
/*
	changeOrigin设置为true时,服务器收到的请求头中的host为:http://localhost:5000
	changeOrigin设置为false时,服务器收到的请求头中的host为:http://localhost:8080
	changeOrigin默认为true
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值