web-dev-qa-db-ja.com

別のポートでホストされているWebSocketサーバーにアクセスする際の混合コンテンツエラー

ポート80(http)と443(https)にnode.jsを使用してexpressサーバーをセットアップしました。そのサーバーとは別に、別のポート8000にWebSocketサーバーをセットアップしました。

var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({port: 8000});

Expressが提供するサイトが機能するには、これらのサービスに接続する必要があります。問題は次のとおりです。httpを介して自分のサイトにアクセスすることは正常に機能しますが、httpsから次のようになります。

index.js:100 Mixed Content: The page at 'https://example.com/' was 
loaded over HTTPS,  but attempted to connect to the insecure 
WebSocket endpoint 'ws://my_sites_ip:8000/'. This request has been 
blocked; this endpoint must be available over WSS.

なぜこのエラーが発生するのですか?これは、WebSocketサーバーがhttpサーバーとは異なるプロセス/ポートにあるという事実と関係がありますか?どうすればそれを機能させることができますか?

7
MaiaVictor

エラーはあなたに何をすべきかを教えています。 httpsを使用する場合は、wssでwebsocketを使用してください

この投稿を見てください html5 Websocket with SSL WebSocket接続は、HTTPまたはHTTPSハンドシェイクで始まります。ページにHTTP経由でアクセスする場合は、WSまたはWSS(WebSocketセキュア:WS over TLS)を使用できます。ただし、ページがHTTPSを介して読み込まれる場合は、WSSのみを使用できます。ブラウザではセキュリティを「ダウングレード」することはできません。

10
pedrofb