我使用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(o
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.' }); });
在非whitedomain的情况下,服务器返回No’Access-Control-Allow-Origin’,这很好,但同时我可以在调试时看到行res.json({msg:’这是为白名单启用CORS域.’});和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();将永远执行.但我想避免这种情况,因为在非白名单域的情况下我不需要将任何内容写入数据库.
有什么想法吗?
我的想法是使用if来过滤app.post中的请求例如,
app.post('/products/:id', cors(corsOptions), function (req, res, next) { if(req.header[origin]===whitelisted){ writeToDatabase(); res.json({ msg: 'This is CORS-enabled for a whitelisted domain.' }); } });