我正在使用此模块处理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.' });
});
然后我通过发布到http://localhost:8080
从app.post('/products/:id'...)
运行测试我预计不应该执行该测试,因为http://localhost:8080
未列入白名单但实际上已经列入白名单。知道为什么以及如何解决这个问题?
我也加了cors(corsOptions)
观看,但它说 - not available
答案 0 :(得分:2)
原因是corsOptions
在调用undefined
时仍然是cors(corsOptions)
(实际上与cors()
相同),因为在启动期间会立即评估cors(corsOptions)
。