如何在 DigitalOcean 中限制对 Express API 的访问
How to limit access to Express API in DigitalOcean
我在 DigitalOceans 上有 2 个应用程序,一个 Express,API 和一个 React 应用程序。 React 应用程序从 API 获取数据。我想确保除了我的 React 应用程序之外没有人可以访问这个 API。我正在使用 Ubuntu 18.04.
- 我的 React 应用程序在 www.example.com
- 我的 API 在 api.example.com
您需要查看请求授权方法。如果您只想要一个不考虑个人用户的简单请求授权系统,您可以在前端使用 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
中找到更多示例
我在 DigitalOceans 上有 2 个应用程序,一个 Express,API 和一个 React 应用程序。 React 应用程序从 API 获取数据。我想确保除了我的 React 应用程序之外没有人可以访问这个 API。我正在使用 Ubuntu 18.04.
- 我的 React 应用程序在 www.example.com
- 我的 API 在 api.example.com
您需要查看请求授权方法。如果您只想要一个不考虑个人用户的简单请求授权系统,您可以在前端使用 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
中找到更多示例