在两台服务器中启用cors过滤器

时间:2018-05-04 12:32:11

标签: angularjs node.js express

我在nodejs app中有两台服务器。 我使用两个服务器http-server用于静态html文件(即index.html)和express用于节点API。现在我收到CORS过滤器错误。即使我在两台服务器上启用了cors过滤器。

我尝试过这些组合。 1.使用中间件在节点服务器上启用它。 即以下代码。

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
  next();
});

并使用以下命令在http-server上。

http-server --cors

我仍然遇到以下错误。

Error

我猜这里两台服务器上的启用都不会起作用,因为两种资源都有不同的CORS值。但是我该如何解决呢?任何帮助将不胜感激。

查看开发人员工具中的网络选项卡,我可以看到以下API请求。 Response to API

Update-1尝试了cors package

每次服务器重启时,我都尝试过以下代码示例。

app.use(cors());

也是这个。

app.use(cors());
app.options('*', cors());

这个具有特定配置的。

app.use(cors());

var whitelist = ['http://localhost:8080']
var corsOptions = {
  origin: function (origin, callback) {
    if (whitelist.indexOf(origin) !== -1) {
      callback(null, true)
    } else {
      callback(new Error('Not allowed by CORS'))
    }
  }
}
app.options('*', cors(corsOptions));

每次我在输出控制台中得到相同的响应。

这些是路线。

module.exports = function(app){

  app.get('/get_tuna/:id', function(req, res){
    tuna.get_tuna(req, res);
  });
  app.get('/add_tuna/:tuna', function(req, res){
    tuna.add_tuna(req, res);
  });
  app.get('/get_all_tuna', function(req, res){
    console.log('###### ++++++++++ 2 - This is called first');
    tuna.get_all_tuna(req, res);
  });
  app.get('/change_holder/:holder', function(req, res){
    tuna.change_holder(req, res);
  });
  app.get('/api/get_available_vault_balance/', function(req, res){
    /// --------- 3
    console.log('VAULT >> API is called >>> :) ');
    vaultbackendservice.get_available_vault_balance(req, res);
  });
}

0 个答案:

没有答案