我正在使用CORS https://www.npmjs.com/package/cors来允许whitedomain
列表。
var whitelist = ['http://example1.com', 'http://example2.com'];
var corsOptions = {
origin: function(origin, callback){
var originIsWhitelisted = whitelist.indexOf(origin) !== -1;
callback(null, originIsWhitelisted);
}
};
app.post('/products/:id', cors(corsOptions), function (req, res, next) {
console.log(0);
res.json({ msg: 'This is CORS-enabled for a whitelisted domain.' });
});
在non whitedomain
的情况下,服务器返回No 'Access-Control-Allow-Origin'
,这很好,但同时我可以在调试中看到,res.json({ msg: 'This is CORS-enabled for a whitelisted domain.' });
和console.log(0);
行仍然被执行-console.log(0);
在服务器端的控制台中打印0
,这是我不希望在这种情况下的。
所以我们说如果正在写入数据库:
app.post('/products/:id', cors(corsOptions), function (req, res, next) {
writeToDatabase();
res.json({ msg: 'This is CORS-enabled for a whitelisted domain.' });
});
这样writeToDatabase();
将始终被执行。但是我想避免这种情况,因为在non whitelisted
域的情况下,我不需要向数据库中写入任何内容。
有什么想法吗?
2条答案
按热度按时间rdrgkggo1#
我的想法是使用if来过滤app.post中的请求,例如,
qvk1mo1f2#
尝试在
corsOptions
中抛出一个错误,如下面的answer所示。基本上,当originIsWhitelisted
为false时抛出错误。这应该可以解决问题。