一个前后端分离项目,前端是 React, 后端是 Spring Boot;
部署的目标是一个 Serverless 的平台,类似 AWS AppRunner 或者DigitalOcean AppPlatform。请注意,这意味着我们无法自主控制平台的反向代理,只能以 APP 为单位部署和管理资源。这是甲方处于成本考量提出的要求。
这个项目的特殊之处在于,Spring Boot 在提供 API 的同时,还提供了几个基于 Thymeleaf 的页面,前端的 React 在一些情况下会跳转到这个页面来。例如用户访问前端/account
路径时,前端组件会跳转到由 Thymeleaf 编写的/login
页面上,完成登录后,再重定向到/account
。这个/account
路径显然是由前端的类似react-router-dom
处理的,意味着在react-router-dom
看来,这个/login
页面并不存在,是要显示 404 的。
现在主要纠结的问题有两个:
这个 React 前端应该部署在哪?
1.1 如果作为静态资源打包在 Spring Boot 中,Spring Boot 的 Controller 在返回index.html
时会试图寻找这个模板,但显然时找不到的(因为并不在模板路径中),因此会报 500 错误。
1.2 如果作为独立的一个 APP 部署在 serverless 上,意味着前后端将使用不同的域名,会涉及到跨域问题
是否有其他的方式绕过这个问题,包括但不限于:
2.1 解决 Spring Controller 找不到index.html
的问题
2.2 更简单实惠的部署方式
2.3 在 serverless 平台上解决跨域问题
...
也许问题看起来挺蠢的,但依然感谢各位不吝赐教。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.