CORS 不适用于 hapijs 和 socket.io

CORS not working with hapijs and socket.io

所以我使用 hapi js 和 socket.io

设置了一个服务器
var hapi = require('hapi');
var server = new hapi.Server();
server.connection({
    host : 'localhost',
    port: 3000,
    routes: {cors: true}
});
var io = require("socket.io")(server.listener);

在客户端

var io = socket.connect(':3000');

当我从本地主机访问时,一切正常,但是当我从外部 IP 访问时,我收到 CORS 错误并且无法正常工作,在服务器上我已经尝试 io.set( "origins", "*:*" ); 没有工作,并且 io.set('transports', ['websocket', 'xhr-polling', 'jsonp-polling', 'htmlfile', 'flashsocket']); 也没有工作,并在浏览器上抛出一个错误的请求错误。 我错过了什么吗? 非常感谢您的宝贵时间。

您可以尝试明确设置原点而不是使用“*”吗?无论如何,您可能不想在生产中使用“*”。

尝试使用:

server.connection({
  host : 'localhost',
  port: 3000,
  routes: {
    cors: {
      origin: ['your_origin_here']
    }
  }
});

有时还会有一个 OPTIONS 预检请求来检查来源,也许也共享它以确保 CORS 设置正确?

所以问题是将主机设置为本地主机,而不是我使用 0.0.0.0 作为解释 here