[chrome]https環境からセキュアでないwebsocket(socket.io)をどうしても利用したい場合の設定


Chrome 36.0.1985.125 で確認

chromeを最新版にしたところ、ssl(https)接続しているサイト上から、ssl接続でないコンテンツ(画像やcss)を呼びだそうとするとエラーになってしまいました。

前は警告だけで通信はできていた気もするのですが、いつの間にかエラーが出るようになっていたのですね。

画像やcssだけでなくwebsocketの場合も同様で、

websocketもwssを使用していない場合は、以下のようなエラーが発生しました。

[blocked] The page at 'https://xx.xx.xx' was loaded over HTTPS, but ran insecure content from 'ws://xx.xx.xx/socket.io': this content should also be loaded over HTTPS.

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

今回、諸事情によりhttps環境からwssを使用せずにwebsocketを使用したかったので、制限解除方法を調べてみました。

特定のマシンのみセキュア設定を解除するのであれば、chromeの設定を変更すれば可能でした。

  1. chrome://flags にアクセス

  2. 「HTTPS から発生した保護されていない WebSocket を許可する」の設定を「有効にする」を選択
    flags

  3. chrome再起動

これで再度websocket接続すれば、警告は出るもののエラーにはならず、通信可能になります。

制限を解除する必要があるため一般的なサービスには使えませんが、検証やイベント等で特定マシンのみ利用する際にはこちらの設定をすればエラーを回避できます。

なかなか気づきにくい設定だったのでメモ。