当前位置: 首页 > news >正文

vue用vite配置代理解决跨域问题(target、rewrite和changeOrigin的使用场景)

Vite的target、rewrite和changeOrigin的使用场景

1. target

使用场景:target 属性在 Vite 的 vite.config.ts 或 vite.config.js 文件的 server.proxy 配置中指定,用于设置代理服务器应该将请求转发到的目标地址。这通常是一个后端服务的API接口地址。
配置示例:

export default defineConfig({  server: {  proxy: {  '/api': {  target: 'http://192.168.110.188:3091', // 后端API地址  // ... 其他配置  },  },  },  // ... 其他配置  
});

说明:在上面的示例中,/api 是代理路径的前缀,当在前端代码中发起一个以 /api 开头的请求时,Vite 会将这个请求转发到 target 指定的地址。

2. rewrite

使用场景:rewrite 属性是一个函数,用于在将请求转发到目标地址之前修改请求的URL路径。这通常用于移除代理路径前缀,以便后端服务能够正确地处理请求。
配置示例:

export default defineConfig({  server: {  proxy: {  '/api': {  target: 'http://192.168.110.188:3091', // 后端API地址  rewrite: (path) => path.replace(/^\/api/, '') // 移除/api前缀  },  },  },  // ... 其他配置  
});

说明:在上面的示例中,rewrite 函数使用了一个正则表达式 /^/api/ 来匹配以 /api 开头的路径,并使用 replace 方法将其替换为空字符串,从而移除了前缀。这样,当前端代码发起一个以 /api/getList 的请求时,Vite 会将其转发到 http://192.168.110.188:3091/getList,而不是 http://192.168.110.188:3091/api/getList。

3. changeOrigin

**注意:**虽然 changeOrigin 在参考文章中并未直接提及,但它是许多代理配置中常见的属性,包括 Vite 的代理配置。
使用场景:changeOrigin 通常用于在跨域代理请求时更改请求的 origin 头部,使得后端服务认为请求是来自于 target 指定的地址,而不是实际的前端开发环境。
配置示例(假设包含 changeOrigin):

export default defineConfig({  server: {  proxy: {  '/api': {  target: 'http://192.168.110.188:3091',  changeOrigin: true, // 更改请求的origin头部  rewrite: (path) => path.replace(/^\/api/, '')  },  },  },  // ... 其他配置  
});

说明:当 changeOrigin 设置为 true 时,Vite 会自动将请求的 origin 头部设置为 target 指定的地址。这在处理跨域请求时尤为重要,因为一些后端服务会检查请求的 origin 头部来决定是否允许该请求。
总结:

target 用于指定代理的目标地址,通常是后端服务的API接口地址。
rewrite 用于在将请求转发到目标地址之前修改请求的URL路径,通常用于移除代理路径前缀。
changeOrigin(尽管在参考文章中未直接提及)用于在跨域代理请求时更改请求的 origin 头部,以便后端服务能够正确地处理请求。这三个属性通常配合使用,以解决前端开发中的跨域问题。

感谢观看,有帮助的话,点点赞点点关注,谢谢老铁!

http://www.lryc.cn/news/366939.html

相关文章:

  • 为什么PPT录制没有声音 电脑ppt录屏没有声音怎么办
  • JDBC学习笔记(三)高级篇
  • c++编译器在什么情况下会提供类的默认构造函数等,与析构函数
  • SpringBoot3整合Mybatis-Plus3.5.5出现的问题
  • 服务器数据恢复—强制上线raid5阵列离线硬盘导致raid不可用的数据恢复案例
  • 初入阿里云,上手走一波
  • [C++] 小游戏 斗破苍穹 2.2.1至2.11.5所有版本(中) zty出品
  • Javaweb---HTTPS
  • [已解决]ESP32-C3上传程序成功但没有反应的问题
  • 使用 OCLint进行静态代码分析:一个完整的配置示例
  • 【Linux】线程的互斥
  • electron如何让你窗口总是显示在最前面【mac解决全屏窗口alwaysOnTop参数不起作用】
  • XR和Steam VR项目合并问题
  • uni-app:利用Vue的原型对象Vue.prototype设置全局方法及其引用
  • django接入djangorestframework-simplejwt步骤
  • 前端工程化工具系列(十)—— Browserslist:浏览器兼容性配置工具
  • 双列集合底层源码
  • 【Ardiuno】实验使用ESP32连接Wifi(图文)
  • 优化家庭网络,路由器无线中继配置全攻略(中兴E1600无线中继设置/如何解决没有预埋有线网络接口的问题/使用闲置路由实现WIFI扩展)
  • 【ArcGIS微课1000例】0114:基于DEM地形数据整体抬升或下降高程
  • AGP4+ 打包运行闪退,AGP7+ 正常(has code but is marked native or abstract)
  • ChatGPT3.5和ChatGPT4.0、ChatGPT4o对比
  • 【知识拓展】HTTP、WebSocket 和 RPC:区别与使用场景详解
  • C语言printf( ) 函数和 scanf( ) 函数格式符的修饰符 “*”有什么作⽤?
  • java 使用WebClient发送https请求
  • Python 中的内存管理机制
  • Mac电脑重置网络命令
  • C++期末复习总结(2)
  • [word] word大括号怎么打两行 #其他#其他#微信
  • 【python】python指南(二):命令行参数解析器ArgumentParser