【发布时间】:2020-07-25 05:43:26
【问题描述】:
我需要能够返回一个有效的 JSON 响应,而没有 HTML 包装它。我可以通过指定一个直接指向我的 Express 后端的端口号来实现这一点,但需要能够返回纯 JSON,而不必在生产中指定端口号。如果您同时使用 React/React-Router 和 Express,有什么办法可以做到这一点?
此设置使用代理通行证来工作:
server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
proxy_pass http://localhost:5000;
}
}
当前输出:https://socialmaya.com/u/real(1)
所需输出:http://socialmaya.com:5000/actors/real (2)
所以我需要 1 的输出与 2 完全相同,以确保另一台服务器可以读取它。如果你点击查看两者的页面源,你可以看到输出不一样。
【问题讨论】:
-
作为参考,我问了另外两个与此问题相关的问题:stackoverflow.com/questions/61160329/…stackoverflow.com/questions/61162675/…
-
在我看来,是 URI
/u/realvs/actors/real引入了 JSON vs HTML?它与https与端口 5000 无关。 -
没错。我只能通过端口 5000 访问
/actors/real的原因是 Express 正在侦听该端口。如果我尝试通过https访问该 URI 并且没有指定端口号,React/React-Router 会呈现 404 页面。我不确定,但似乎 React-Router 阻止了对 Express 路由的任何访问,除非它们在组件中被调用。 -
你的问题是,如何在将
/u/real重写为/actors/real之前将其传递到上游?试试rewrite ^/u/(.*)$ /actors/$1 last; -
成功了,谢谢!还有另一种方法吗?这意味着必须在 Nginx 中为我使用 Express 定义的每条路由重写。
标签: node.js reactjs express nginx react-router