このstackoverflowの質問に出くわし、その質問からこの記事に行きました。
私が理解していることから、暗号化された/暗号化されていない Websocket 接続の両方は、適切なヘッダーを介して送信するプロキシ サーバーに依存しています。
暗号化されていない websocket 接続に関する記事から
暗号化されていない WebSocket トラフィックが WebSocket サーバーに向かう途中で透過プロキシを通過する場合、この場合ブラウザーは CONNECT メソッドを発行しないため、接続は実際には失敗する可能性があります。プロキシ サーバーが要求を >(WebSocket) サーバーに転送する場合、Connection >header を含む特定のヘッダーを取り除くことが期待されます。したがって、正常に動作する透過プロキシ サーバーは、WebSocket の >upgrade >handshake をほぼ即座に失敗させます。すべてのプロキシ サーバーが、予想されるプロキシの動作に関する HTTP 標準に準拠しているわけではありません。たとえば、一部のプロキシ サーバーは、Connection: Upgrade ヘッダーを削除せずに WebSocket サーバーに渡すように構成されており、WebSocket サーバーは 101 Web Socket Protocol ハンドシェイク応答を送信します。クライアントまたはサーバーが最初の WebSocket フレームの送信を開始すると、問題が発生します。フレームは、プロキシ サーバーが期待するもの (通常の HTTP トラフィックなど) に似ていないため、プロキシ サーバーが WebSocket トラフィックを処理するように特別に構成されていない限り、何らかの例外が発生する可能性があります。
暗号化された Web ソケット接続について
透過プロキシ サーバーの場合、ブラウザはプロキシ サーバーを認識しないため、HTTP CONNECT メソッドは送信されません。ただし、ワイヤ トラフィックは暗号化されているため、中間の透過的なプロキシ サーバーは暗号化されたトラフィックの通過を許可する可能性があるため、Web ソケット セキュアを使用すると、WebSocket 接続が成功する可能性がはるかに高くなります。
暗号化されていない接続が失敗することが予想され、暗号化された接続が成功する可能性が高い場合、どのように機能しますか?!!
私はおそらくこの全体が間違っている可能性がありますが、これがどのように機能するかを理解したいと思っています.