解决分布式React前端在本地开发环境的跨域问题

原创/朱季谦

在前后端分离的分布式架构中,跨域是一道无法绕过去的门槛,众所周知,生产环境上解决跨域最便捷的方式是使用Nginx来处理,那么,在本地开发环境又该如何处理呢?

React框架里处理跨域问题,可以使用http-proxy-middleware库解决。

http-proxy-middleware可实现全局设置,将客户端请求转发到目标服务器,从而实现代理服务器功能,进而解决模块化前端跨域访问的问题。

本文基于SpringBoot+React环境进行说明。

1.前端下载依赖

bash 复制代码
npm install --save-dev http-proxy-middleware

2.在src目录下新建setupProxy.js文件

javascript 复制代码
 1 const { createProxyMiddleware } = require('http-proxy-middleware');
 2 module.exports = function(app) {
 3 // /api 表示代理路径
 4 //target 表示目标服务器的地址
 5     app.use(
 6         '/api/system',
 7         createProxyMiddleware({
 8             // http://localhost:4000/ 地址只是示例,实际地址以项目为准
 9             target: 'http://127.0.0.1:8081',
10             // 跨域时一般都设置该值 为 true
11             changeOrigin: true,
12             // 重写接口路由
13             // pathRewrite: {
14             //     '^/admin': '',// 这样处理后,最终得到的接口路径为: http://localhost:8080/xxx
15             // }
16         })
17     );
18     
19       app.use(
20         '/admin/example',
21         createProxyMiddleware({
22             target: 'http://127.0.0.1:8080',
23             changeOrigin: true,
24         })
25     );
26 }

这里需要注意一点是,在http-proxy-middleware的1.0.0之前的版本与之后的版本,两者对模块引引用是存在差别的,如:

0.x.x版本的引用方式是:

bash 复制代码
  1 const proxy=require('http-proxy-middleware');

1.0.0之后的版本引用方式:

bash 复制代码
  1 const {createProxyMiddleware}=require('http-proxy-middleware');

该前端对应的后端设置如下:

XML 复制代码
1 server:
2   port: 8081
3   servlet:
4     context-path: /api
5     

按照以上设置,即可实现本地开发环境解决跨域问题,当然,这里只适合在开发环境进行开发时设置,若发布到生产上后,最好方式是通过nginx代理来进行解决跨域问题。

相关推荐
Hyyy5 小时前
普通前端续命周报——第1周
前端·javascript
KaMeidebaby6 小时前
卡梅德生物技术快报|抗独特型抗体开发:半抗原检测技术瓶颈拆解,抗独特型抗体开发工程化实践
前端·数据库·人工智能·其他·百度·新浪微博
2501_940041746 小时前
纯前端创意交互:五款全新实用工具与视觉应用生成指南
前端·交互
刀法如飞6 小时前
《道德经》简单解说版-第 2 章:天下皆知美之为美
前端·后端·面试
心中有国也有家7 小时前
hccl 架构拆解:昇腾集合通信库到底在做什么?
人工智能·经验分享·笔记·分布式·算法·架构
发现一只大呆瓜8 小时前
超全 Vite 性能优化指南:网络、资源、预渲染三维落地方案
前端·面试·vite
IT_陈寒9 小时前
Vue的computed属性怎么突然不更新了?
前端·人工智能·后端
智商不够_熬夜来凑9 小时前
【Picker】单选多选
前端·javascript·vue.js
米饭不加菜9 小时前
Typora 原生流程图语法完全指南(Flowchart.js)
前端·javascript·流程图
scan7249 小时前
langgraphy条件边
前端·javascript·html