React 代理如何防止来自外部世界

时间:2021-07-18 18:26:24

标签: node.js reactjs proxy

我有一个在 3000 端口上工作的 react js 应用程序和一个在 4000 端口上工作的 nodejs。 我使用 setupProxy 作为

const createProxyMiddleware = require(`http-proxy-middleware`)
module.exports = function (app) {app.use('/api/*', createProxyMiddleware({ target:http://localhost:4000', changeOrigin: true, }))}

在服务器上,在端口 4000 上运行,我使用 cors 作为:

app.use(cors((cors.CorsOptions = { origin: `http://localhost:3000`,})))

localhost:3000 上的应用程序公开为 https://example.com/ 我在 Node 服务器上有一个端点 /api/todos,可以从 React 客户端完全访问。

外部世界可以发布例如https://example.com/api/todos。如何防止这种情况?

1 个答案:

答案 0 :(得分:1)

我几天前在这里回答了一个类似的帖子

How to launch a command on the server from a web page ( nodejs )

话虽如此,也许 TLDR 您需要一种方法来保护您的路线。这就是您真正有两个选择的地方。

  1. 使用 JWT
  2. 使用“会话”(假设您不是从主应用程序外部连接/发布,因此它在前端/后端之间共享会话)

听起来,应用程序/前端没有绑定在一起,所以选项 2 可能不是一个选项。

使用选项一,您将从前端创建一个 JWT 令牌。此令牌将包含只能在服务器上解码的编码字符串。您将这个令牌与您的帖子或获取请求一起发送,并使用中间件来解码和验证令牌是否有效,如果不是,请不要让它发布到路由中。