我有一个在 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
。如何防止这种情况?
答案 0 :(得分:1)
我几天前在这里回答了一个类似的帖子
How to launch a command on the server from a web page ( nodejs )
话虽如此,也许 TLDR 您需要一种方法来保护您的路线。这就是您真正有两个选择的地方。
听起来,应用程序/前端没有绑定在一起,所以选项 2 可能不是一个选项。
使用选项一,您将从前端创建一个 JWT 令牌。此令牌将包含只能在服务器上解码的编码字符串。您将这个令牌与您的帖子或获取请求一起发送,并使用中间件来解码和验证令牌是否有效,如果不是,请不要让它发布到路由中。