我正在努力使自己了解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();
我正在努力实现的目标吗?
答案 0 :(得分:0)
就像提到的错误一样,使用HTTPS的站点的Websocket连接不安全。确保您要连接的Websocket服务器支持WSS协议,该协议应为wss://
答案 1 :(得分:0)
我最近不得不解决类似的问题。我得到了以下解决方案。我为本地websocket服务器创建了一个新的A记录,类似于ws.example.org,其本地网络中的服务器IP地址。然后,我必须为此服务器添加SSL证书。为此,我使用certbot创建了手动证书(我的服务器未连接到Internet,因此不可能进行自动质询,但是可以编写脚本)。最终,在安装证书后,我的PWA能够建立wss连接。