无法在Firefox上建立Websocket安全连接

发布于 2021-01-29 18:05:02

我迷上了Firefox。我无法使Websocket正常工作。我使用TornadoWebsocket,并通过以下代码对其进行了初始化:

app = Application([(r'/mypath/ws', WSHandler)])
http_server = HTTPServer(app, ssl_options={
                "certfile": "~/certs/websocket.crt",
                "keyfile": "~/certs/websocket.key"
            })
http_server.listen("443")

然后像这样在Javascript端初始化它:

var WS = new WebSocket("wss://websocket.localhost/mypath/ws");

这段代码在Chrome上运行良好,同时我自己创建了证书并在HTTPS下运行页面。但是Firefox一直在说:

Firefox can't establish a connection to the server at wss://websocket.localhost/mypath/ws.

我用谷歌搜索,发现了太多想法,但没有一个对我有用:(

任何帮助将不胜感激。

关注者
0
被浏览
167
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我通过ProxyPass解决了我的问题。我用Tornado创建了一个非安全的Websocket服务器,并在特定的端口(例如3232)上运行它:

    app = Application([(r'/ws/', WSHandler)])
    ws_server = HTTPServer(app)
    ws_server.listen("3232")
    

    然后,我在Apache conf中编写了一个proxypass并使用mod_proxy_wstunnel:

    ProxyPass /ws/ ws://127.0.0.1:3232/ws/
    ProxyPassReverse /ws/ ws://127.0.0.1:3232/ws/
    

    我在前端上创建Websocket客户端,如下所示:

    var WS = new WebSocket("wss://websocket.localhost:81/ws/")
    

    在这种情况下,我可以在带有https的安全连接上创建一个连接,并且我的端口是81,并且我的proxypass将任何Websocket请求重定向到本地侦听的端口3232。这不是一个确切的解决方案,主要是一种解决方法。但这对我来说很好。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看