首页 > 解决方案 > 在两台服务器中启用 cors 过滤器

问题描述

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

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

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

我仍然收到以下错误。

错误

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

查看开发人员工具中的网络选项卡,我可以看到 API 请求的以下内容。 对 API 的响应

Update-1 尝试过 cors 包

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

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);
  });
}

标签: angularjsnode.jsexpress

解决方案


推荐阅读