集群Nodejs服务器和CAS服务器:CORS问题

时间:2016-08-19 14:47:23

标签: javascript node.js cors cas

我有一个基于Nodejs的服务器,它使用一个中间件,它基本上将用户重定向到CAS来管理身份验证。 CAS服务器以故障单响应,最后我的Nodejs服务器使用CAS交换用户对象的故障单并将其存储在会话中。

此过程在没有群集的情况下完美无缺。

今天我想使用https://nodejs.org/api/cluster.html集群化我的Nodejs服务器(我已经做过没有任何问题的事情)。

所以不要:

let server = http.createServer(app);
server.listen(PORT, HOST, () => {
  // Keep a track that the server has been launched
  logger.log(`Server running at http://${HOST}:${PORT}/`);
});

如果一切正常,我现在有:

if(cluster.isMaster) {

// This is the mother process

  // Let's create the threads
  for(let i=0; i < NB_WORKERS; i++) {
    cluster.fork();
  }

  // When a child crash... Restart it
  cluster.on('exit', (worker, code, signal) => {
    logger.log("info", "A child died (PID: %s). It was killed by code or signal %s. Restarting...", worker.process.pid, dode || signal);
    cluster.fork();
  });
} else {
  // This is a child

  // Create the server, based on http
  let server = http.createServer(app);
  server.listen(PORT, HOST, () => {
    // Keep a track that the server has been launched
    logger.log(`Server running at http://${HOST}:${PORT}/`);
  });
}

当我启动服务器时,它实际上会按照预期在NB_WORKERS个线程上启动服务器。但是当我想用我的浏览器访问我的节点服务器提供的应用程序时,我有以下错误:

enter image description here

如果你看不到那就说:

XMLHttpRequest cannot load https://localhost:8443/cas/login?
service=http://localhost:3000. No 'Access-Control-Allow-Origin' header is
present on the requested resource. Origin 'http://localhost:3000' is 
therefore not allowed access

https://localhost:8443是我的CAS服务器正在运行,而http://localhost:3000是我的Node服务器正在运行的地方。

请注意,如果我将NB_WORKERS设置为1,则一切正常。

我知道在我的CAS服务器配置中设置'Access-Control-Allow-Origin'标题可能会使一切正常,但我不明白为什么它使用一个线程而不是两个或更多。

我缺少什么?

0 个答案:

没有答案