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



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

  • 我的React应用程序位于www.example.com
  • 我的API在API.example.com

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

注意:鉴于您的应用程序不需要登录,我推荐使用此应用程序。

首先,在后端安装库:

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中间件中找到更多示例

您需要研究请求授权方法。如果你只想要一个不考虑单个用户的简单请求授权系统,你可以在前端创建一个带有auth令牌的环境变量,并将其与每个请求一起发送,然后只有在authToken与后端保存的authToken匹配时才用数据响应。

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

最新更新