【发布时间】:2019-09-16 19:09:56
【问题描述】:
我有一个简单的node.js 设置运行socket.io >1.0.0;
fs = require('/home/node/bin/node_modules/file-system');
// Options for socket.io > 1.0.0
var options = {
allowUpgrades: true,
transports: [ 'polling', 'websocket' ],
pingTimeout: 6000,
pingInterval: 3000,
cookie: 'nom-nom',
httpCompression: true,
key: fs.readFileSync('/etc/letsencrypt/live/example.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/example.com/fullchain.pem'),
origins: '*:*'
};
io = require('/home/node/bin/node_modules/socket.io')(8000, options);
当客户端从通过http 服务的页面连接时,它们能够按预期进行连接,并且允许套接字连接。如果客户端尝试从通过https 提供的页面进行连接,我会收到以下错误;
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://example.com:8000/socket.io/?EIO=3&transport=polling&t=MfVDWxD. (Reason: CORS request did not succeed).
鉴于我已经为 *:* 设置了 CORS 政策,这应该允许任何我不明白为什么它失败的事情。
我尝试将{secure: true} 添加到客户端连接,我还尝试强制为连接字符串添加wss:// 和https:// url - 所有这些都会导致相同的CORS 错误。
这是一个裸套接字实现,不使用 express 甚至 http 等任何框架。
谁能指出我正确的方向,以便我可以让我的客户通过https 或理想情况下通过http 和https 进行连接。
【问题讨论】:
标签: node.js sockets socket.io cors socket.io-1.0