Firefoxの「コンテンツデータ破損エラー」解決方法
問題現象
サイトを開いた際に「コンテンツデータ破損エラー」もしくは「…のウェブサイトで修復不能なネットワークプロトコル違反が発生しました。」の表示となる。
※Chromeでは問題現象が発生しない
※英語表記では、「Oops.」「The site at …(URL) has experienced a network protocol violation that cannot be repaired.」です
類似現象
検索の結果を見る限り複数のサイトで類似の問題が発生しているようです。
- Qiita
- Gmail
- Outlookメール
※筆者が遭遇したのは、QiitaとTwitterのみです
原因
Firefoxのサービスワーカー実装に問題があるようです。ただし、同一の問題から発生しているわけではなく、個別の問題が同一「コンテンツデータ破損エラー」の出力となっているようです。そのため、問題の再現手順が現象ごとに異なることがあります。
回避策
対象サイトのサービスワーカーを削除することで問題現象が解消されます。
削除方法は、アドレスバーに「about:serviceworkers
」を入力して、対象ドメインのサービスワーカーを登録解除ボタンを押せば削除できます。もしも、再度インストールされる場合は、新規のインストールを含めて無効化する必要があります。
※Chromeなどの別ブラウザを使用することも考えられます
サービスワーカーの無効化
Firefoxのサービスワーカー無効化には、次の方法があります。
about:config
からサービスワーカーの新規登録を無効化する- 「
dom.serviceWorkers.enabled
」を「false
」に設定する about:config
設定変更後にFirefoxを再起動する- 新規登録の無効化であるため、登録済みのサービスワーカーは、動作し続けます
- 「
- ユーザスクリプトからサービスワーカーを無効化する
- 登録関数を上書きして新規登録不可にする
- 既に登録済みならば、登録解除する
- ホワイトリストやブラックリストで特定サイトのみ適用可能です
- 拡張機能からサービスワーカーを無効化する
- 実現方法は、ユーザスクリプトと同様です
- 例:Reject Service Worker
詳しくは、「ServiceWorkerを無効化する」の記事を参照して下さい。
Qiitaの問題について
問題現象の再現手順
- JavaScriptを有効にする
- Qittaにアクセスする(サービスワーカーをインストールする)
about:serviceworkers
でQittaサービスワーカーのインストールを確認する
- JavaScriptを無効にする
- NoScriptなどを使用する
- Qittaに再度アクセスする
- 問題現象が発生する
個別の回避策
常にJavaScript有効状態でアクセスするか、常にJavaScript無効状態(サービスワーカーをインストールしない)でアクセスする方法が考えられます。
Twitterの問題について(Firefox81+)
本件についての詳細は、下記のBugzillaのスレッドを参照して下さい。
問題現象の再現手順
- プライバシーレベルを「標準」にする
- [三] > [オプション] > [プライバシーとセキュリティ] > [強化型トラッキング防止機能]
- Twitterにアクセスする(サービスワーカーをインストールする)
about:serviceworkers
でTwitterサービスワーカーのインストールを確認する
- プライバシーレベルを「厳格」にする
- Twitterでページ全体を再読み込みする操作を実施する
- ログアウト・アカウント切り替えなど
- 問題現象が発生する
個別の回避策
プライバシーレベル設定「厳格」にする場合、サービスワーカーを登録解除しておくことが考えられます。