【问题标题】:can you use react server to forward your request to backend?您可以使用反应服务器将您的请求转发到后端吗?
【发布时间】:2019-04-20 17:39:32
【问题描述】:
我正在开发一个工具,其中前端由 react js(create-react-app 并使用serve)制作,后端由 express+node 制作,并且两个服务器都在不同的 Docker 容器上运行远程机器。现在的问题是系统管理员说他只会让前端可以从外部访问,而后端容器只能由前端容器访问。由于我在 /API/example 上调用 XMLHttpRequest 并且后端没有公共 URL,所以我可以使用前端服务器将我的请求重定向到后端吗?
为了让我自己清楚,这是我想要做的,前端在https://frontend.com 上运行,我从浏览器向https://frontend.com/API/example 进行 API/示例调用,服务器会将这个调用重定向到后端并回复回复.
【问题讨论】:
标签:
node.js
reactjs
docker
frontend
backend
【解决方案1】:
您应该使用某种网络服务器而不是 serve npm 包。您的问题是您希望将所有请求代理到后端并且服务包只是一个静态服务器。最简单的方法是编写自定义节点 js 脚本,提供静态资产(例如使用 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 或任何您喜欢的网络服务器,并且基本相同。