解决前端 node 环境跨域与404问题,yog2

本文介绍了在前后端分离的架构中,使用 Yog2 遇到的跨域和404问题,并提出了一种不增加研发成本的解决方案。通过新建模块 `nodeProxyDev` 作为代理,修改 `yog-base` 的 `dispatcher.js` 文件,利用模块名区分前端路由和后端接口,从而实现无须通过 Node 中转的直接访问,有效解决了跨域和404问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题背景:

前端通常会有两种架构,一种是无前后端分离的,前端为后端提供渲染模板,这种方式把前后端开发人员绑定到了一起,很不灵活;另一种是前后端分离,也是目前大多数公司在走的路线,通常会使用 node 提供一个中间层,使用 node 层和服务端进行交互。市面上主要有阿里的 egg.js 和百度的 yog2。我们目前采用 yog2,采用 yog2 后面临了两个问题,这两个问题直到今天被策底解决:

问题一:跨域,前端页面直接访问后端接口时,出现跨域问题; 

问题二:404,由于前端 node 服务没有部署后端接口服务,访问接口时会 404;

下文的解决方案针对 yog2.

最初方案:

解决这两个问题,最初的方案是在每个 app 中实现了一个 proxy,这个 proxy 负责把访问后端的接口转发到后端服务上:

axios.get('/ns/proxy/sub/userInfo', { });

这样有以下几个缺点:

1、每个接口的path 需要这样写:/namespace/proxy/path,这样将导致请求后端接口时必须要通过 node 转发,但有些接口并不需要用 node 转发,平白无故浪费了流量,增加了 node 集群的负载,尤其对于千万级别的 pv,能节省一点算一点

2、每个模块中需要实现一层 proxy,而且不能保证每位同学都按照/namespace/proxy/path 这种方式进行接口请求,无疑会引入跨域和404问题; 

3、这种方式给研发带来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值