node.js - CORS 不适用于 hapijs 和 socket.io

标签 node.js socket.io cors hapi.js

所以我使用 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 设置正确?

关于node.js - CORS 不适用于 hapijs 和 socket.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28979160/

相关文章:

node.js - 从 npm 下载 Phonegap 时出错

javascript - 如何在 grunt 中解析 '<%= =>' ?

node.js - 删除模块目录后 npm install 不再可能

node.js - GraphQL 架构定义中出现“获取对象”异常

python - 从socketIo python发出事件

node.js - 在 azure ubuntu 虚拟机上设置支持 websocket 的应用程序

java - 如何使用 Socket.IO-client Java 将 String 消息从 Android 发送到服务器?

ruby-on-rails - 如何在 Rails 中获取 "Origin"请求 header

node.js - Google OAuth2 : Redirect has been blocked by CORS policy: Request requires preflight, 不允许跟随跨域重定向

javascript - Angular-JWT 授权 header 异常