具有不安全的Websocket的PWA到本地应用程序

时间:2019-08-05 10:51:57

标签: typescript websocket signalr-hub asp.net-core-signalr asp.net-core-3.0

我正在努力使自己了解HTTP,HTTPS,WS和WSS。

我有一个托管在HTTPS端点上的Vue PWA。 在该应用程序内部,我尝试连接到在HTTP端点上托管SignalR-hub的本地PC。

我正在使用@aspnetcore/signalr打字稿包。在开发机器上一切正常,但是当我在PWA上尝试时,出现以下错误:

Error: Failed to start the connection: SecurityError: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.

我的connectionbuilder如下所示:

this.signalRConnection = new HubConnectionBuilder()
      .withUrl(`http://${this.localIp}/${this.hubName}`, {
        skipNegotiation: true,
        transport: HttpTransportType.WebSockets
      })
      .configureLogging(LogLevel.Information)
      .build();

我正在努力实现的目标吗?

2 个答案:

答案 0 :(得分:0)

就像提到的错误一样,使用HTTPS的站点的Websocket连接不安全。确保您要连接的Websocket服务器支持WSS协议,该协议应为wss://

答案 1 :(得分:0)

我最近不得不解决类似的问题。我得到了以下解决方案。我为本地websocket服务器创建了一个新的A记录,类似于ws.example.org,其本地网络中的服务器IP地址。然后,我必须为此服务器添加SSL证书。为此,我使用certbot创建了手动证书(我的服务器未连接到Internet,因此不可能进行自动质询,但是可以编写脚本)。最终,在安装证书后,我的PWA能够建立wss连接。