我正在开发一个工具,其中前端是用react js(create-react-app并使用 serve 提供服务)制作的,后端是用express+node制作的,并且两个服务器都在远程计算机上的不同Docker容器上运行。现在的问题是系统管理员说他只会让前端可以从外部访问,而后端容器只能由前端容器访问。由于我在/API/example 上调用 XMLHttpRequest 并且后端没有公共(public) URL,因此我可以使用前端服务器将我的请求重定向到后端吗?
为了让我自己清楚,这就是我想要做的,前端在 https://frontend.com
上运行,我从浏览器到 https://frontend.com/API/example
进行 API/example 调用,服务器会将此调用重定向到后端并回复响应。
最佳答案
您应该使用某种网络服务器而不是 serve npm 包。您的情况的问题是您希望将所有请求代理到后端,并且服务包只是一个静态服务器。对您来说最简单的方法是编写自定义 Node js 脚本,提供静态 Assets (例如使用 express )并将所有请求代理到后端。 (例如 express-http-proxy )。
示例代码如下所示:
const proxy = require('express-http-proxy');
const app = require('express')();
app.use('/api', proxy('http://backend.url')); // this will proxy all incoming requests to /api route to backend base url
app.use(express.static(‘path/to/your/static/assets’)); // these were previously served with serve
app.listen(3000, () => console.log(‘Frontend listening on port: 3000’));
另一种可能的方法是使用 nginx、apache 或任何您想要的网络服务器,并且执行基本相同的操作。
关于node.js - 你可以使用 react 服务器将你的请求转发到后端吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55725198/