我在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)