【发布时间】:2019-03-11 20:28:15
【问题描述】:
我想用 CORS 保护我的 API。我希望我的 API 仅具有来自所选域的调用访问权限。
我正在使用 node.js 和 express,所以我添加到我的项目中:https://github.com/expressjs/cors
以及示例代码:
var express = require('express')
var cors = require('cors')
var app = express()
var corsOptions = {
origin: 'http://example.com',
optionsSuccessStatus: 200
}
app.get('/test', cors(corsOptions), function (req, res, next) {
res.json({msg: 'This is CORS-enabled for only example.com.'})
})
但是,如果我通过 POSTMAN 从本地主机发出请求,我仍然会从该路由中得到响应。这应该被阻止,并且仅适用于来自一个域(example.com)的请求。
我之前试过:
router.get('/test', cors(corsOptions), function(req, res, next) {
console.log(corsOptions);
res.header("Access-Control-Allow-Origin", "http://www.example.com);
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.status(200).send({ work: true });
});
但这也让我的邮递员请求...
我希望有一个 API,只有在我的 example.com 页面和 JavaScript 发送的请求时才能引用它。
【问题讨论】:
-
我认为您误解了 CORS 的工作原理。它由浏览器而不是服务器强制执行。有关更多信息,请查看答案here
标签: javascript node.js api express cors