我正在使用此模块来处理 cors 请求 https://www.npmjs.com/package/cors 我需要限制除白名单之外的所有域
来自官方 CORS 模块示例:
var whitelist = ['http://example1.com', 'http://example2.com'];
var corsOptions = {
origin: function(origin, callback){
var originIsWhitelisted = whitelist.indexOf(origin) !== -1;
callback(null, originIsWhitelisted);
}
};
app.get('/products/:id', cors(corsOptions), function(req, res, next){
res.json({msg: 'This is CORS-enabled for a whitelisted domain.'});
});
我对此进行了更改以使其正常工作:
var origin;
var corsOptions;
app.all('*', function (req, res, next) {
origin = req.get('origin');
var whitelist = ['http://example1.com', 'http://example2.com'];
corsOptions = {
origin: function (origin, callback) {
var originIsWhitelisted = whitelist.indexOf(origin) !== -1;
callback(null, originIsWhitelisted);
}
};
next();
});
app.post('/products/:id', cors(corsOptions), function (req, res, next) {
res.json({ msg: 'This is CORS-enabled for a whitelisted domain.' });
});
然后我通过发布到 app.post('/products/:id'...)
来从 http://localhost:8080
运行测试,我预计它不应该被执行,因为 http://localhost:8080
没有列入白名单,但实际上它确实如此。知道为什么以及如何解决这个问题吗?
我还添加了 cors(corsOptions)
来观看,但它说 - 不可用
最佳答案
原因是,当调用 cors(corsOptions)
时,corsOptions
仍然是未定义
(实际上与 cors()
相同),因为 cors(corsOptions)
在启动期间立即评估。
关于node.js - Express CORS域名白名单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36393256/