通过 https 加载的网页如何连接到在 localhost 上运行的 WebSocket 服务器?

Posted

技术标签:

【中文标题】通过 https 加载的网页如何连接到在 localhost 上运行的 WebSocket 服务器?【英文标题】:How may a web page that is loaded via https connect to a WebSocket server running on localhost? 【发布时间】:2013-12-15 00:13:28 【问题描述】:

我正在尝试创建一个可以连接到客户端本地 WebSocket 服务器的网页。这个想法是使用在浏览器中运行的 javascript 客户端作为一种代理,以实现远程 Web 服务器和本地安装的实现 WebSocket 服务的客户端应用程序之间的通信。

所以基本上,我要做的是从https://example.com 加载一个网页,其中包含一些JavaScript,可以打开一个新的WebSocket 到ws://localhost:1234/context。 只要通过 http 访问网页,就可以正常工作。 一旦使用 https,Firefox 和 Internet Explorer 拒绝连接,并且 WebSocket 构造函数会引发异常(SecurityError,代码 18)。 现在,我已经找到了来自 Mozilla 的建议,即 https 站点应该只使用安全的 (wss://) WebSockets,而普通的 http 站点应该只使用普通的 WebSockets (link)。但是从 https 上下文中连接到 localhost 时,我并没有真正看到安全问题。此外,这对 Chrome、Opera 和 Safari 来说就像一个魅力。

所以实际的问题是:有没有办法解决这个问题?就像在网页中引入非 https 上下文或类似的东西让所有浏览器从 https 传递的网页中连接到 ws://localhost?

提前非常感谢!我不完全是网络开发人员,所以这种特定于浏览器的行为并不属于我的专业领域:)

【问题讨论】:

【参考方案1】:

您必须先接受证书。

在您的情况下,您只需转到 https://localhost:1234/context 即可。完成后,您可以在问题中使用wss URL。

【讨论】:

以上是关于通过 https 加载的网页如何连接到在 localhost 上运行的 WebSocket 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

ionic无法加载网页但出现错误:无法连接到服务器

如何将 POST 连接到通过 AJAX 加载的不同剃须刀页面到模式弹出窗口中?

如何使用 WinINet 通过代理连接到 HTTPS

通过网页连接到 telnet

通过 node-red 将 Python 连接到网页

通过 Powershell 连接到 ***