如何在 DigitalOcean 中限制对 Express API 的访问

How to limit access to Express API in DigitalOcean

我在 DigitalOceans 上有 2 个应用程序,一个 Express,API 和一个 React 应用程序。 React 应用程序从 API 获取数据。我想确保除了我的 React 应用程序之外没有人可以访问这个 API。我正在使用 Ubuntu 18.04.

您需要查看请求授权方法。如果您只想要一个不考虑个人用户的简单请求授权系统,您可以在前端使用 auth token 创建一个环境变量,并在每个请求中发送它,然后仅在 authToken 匹配时才响应数据已保存在您的后端。

如果您有多个用户使用您的应用,我建议您查看 JWT (https://jwt.io)

您可以在 Express 中使用 CORS,这是一种允许从域外的另一个域请求网页上的受限资源的机制。

NOTE: I'm recommending this one given your app does not require login.

首先,在后端安装库:

npm install cors

其次,设置允许的原点:

var express = require('express')
var cors = require('cors')
var app = express()

var corsOptions = {
  origin: 'http://example.com',
  optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
}

app.use(cors(corsOptions))

app.get('/products/:id', function (req, res, next) {
  res.json({msg: 'This is CORS-enabled for only example.com.'})
})

app.listen(80, function () {
  console.log('CORS-enabled web server listening on port 80')
})

您可以在 CORS Middleware

中找到更多示例