Node express cors and routes

时间:2016-04-04 03:05:37

标签: node.js rest express cors

我使用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域的情况下我不需要将任何内容写入数据库。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我的想法是使用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.' }); }           
    });