【问题标题】:Socket.io Letsencrypt and a secure connection failing on CORSSocket.io Letsencrypt 和 CORS 上的安全连接失败
【发布时间】: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 或理想情况下通过httphttps 进行连接。

【问题讨论】:

    标签: node.js sockets socket.io cors socket.io-1.0


    【解决方案1】:

    你需要安装 cors,你可以使用 npm 或任何其他包管理器来完成

    然后在你的 nodejs 应用程序中:

    // require cors
    const cors = require("cors");
    // Use Cors As Middleware
    app.use(cors());
    

    【讨论】:

    • 不就是用Express的时候吗? - 这是一个裸套接字实现,可悲的是我不能切换到使用 express 之类的东西。
    • 看看this可能会有帮助
    • 对不起 - 但也许我错过了一些东西 - 该链接是关于使用 http - 我也没有使用它。我只使用带有直接套接字的裸 'io.foo' 表达式,没有包装框架或助手。抱歉,这些东西对我来说不是日常工作,所以当我遇到完全不同的例子时,它无济于事 - 抱歉。
    • 我明白了,希望你能尽快找到你要找的东西,试着在 github 社区上问同样的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    相关资源
    最近更新 更多