vue+vite项目中跨域问题解决与跨域代理的两种方式原理详解
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
文章目录
vue+vite项目中难免会碰到跨域的情况,那前端如何解决跨域呢?在这里我们以代理geoserver服务端地址http://localhost:8080/geoserver为例介绍前端解决跨域问题的两种方式。
一、第一种
1.请求URL为(/geoserver/Cesium/wms)
var wmsImageryProvider = new Cesium.WebMapServiceImageryProvider({
url: "/geoserver/Cesium/wms",
layers: "Cesium:sfdem",
parameters: {
transparent: true, //是否透明
format: "image/jpeg" //返回格式
}
})
2.代理
proxy: {
'/geoserver': {
target: 'http://localhost:8080',//目标服务器地址
changeOrigin: true
}
}
二、 等同于(第二种)
1.请求url地址为(/geoserverApi/Cesium/wms)
var wmsImageryProvider = new Cesium.WebMapServiceImageryProvider({
url: "/geoserverApi/Cesium/wms",
layers: "Cesium:sfdem",
parameters: {
transparent: true, //是否透明
format: "image/jpeg" //返回格式
}
})
2.代理
proxy: {
'/geoserverApi': {
target: 'http://localhost:8080/geoserver',//目标服务器地址
changeOrigin: true,
rewrite: (path) => path.replace(/^\/geoserverApi/, '')
}
}
三、总结
以上两种方式都可以代理同一个服务地址http://localhost:8080/geoserver,授人以鱼不如授人以渔,代理原理详细介绍如下:
(1) target参数:相当于是在代理地址(geoserver或者geoserverApi)前面拼接target
代理后地址就是http://localhost:8080/geoserver或http://localhost:8080/geoserver/geoserverApi
(2)changeOrigin参数:开启代理
在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题;
(3)rewrite参数:路径改写
- 在第二种代理方式时,代理地址为geoserverApi,代理后就成了http://localhost:8080/geoserver/geoserverApi,那实际我们的服务地址是http://localhost:8080/geoserver,所以/geoserverApi这部分就是多余,我们就要把多余的部分去除了;
- rewrite: (path) => path.replace(/^/geoserverApi/, ‘’)我们看这段去除代码实际上就是通过正则表达式把字符串/geoserverApi替换成了空字符串‘’来达到去除的效果
GitHub 加速计划 / vu / vue
207.55 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:3 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 5 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献3条内容
所有评论(0)