2017-12-03 10 views
2

コンテキストFirefoxのコンテンツスクリプトは、一部のページではロードしない

私は現在、ChromeとOperaので期待通りに働いているブラウザ拡張に取り組んでいますが、私はFirefoxで問題に直面しています。ここで問題を再現するために必要なmanifest.jsonの最小バージョンです:

{ 
    "name": "Example", 
    "version": "0.0.1", 
    "author": "Pyves", 
    "content_scripts": [ 
     { 
      "all_frames": true, 
      "matches": [ 
       "<all_urls>" 
      ], 
      "js": [ 
       "content.js" 
      ] 
     } 
    ], 
    "manifest_version": 2 
} 

そしてここでは、関連content.jsです:

console.log("Content script loaded"); 

問題

Content script loadedが体系的に関係なく、訪問したページのログに記録されますChromeとOperaを使用する場合それにも関わらず、コンテンツのスクリプトは、例えば、生のGitHubページをFirefoxを使用したときに次のようないくつかのページをロードしていないよう: https://raw.githubusercontent.com/badges/shields/master/README.md

コンテンツスクリプトがなかった理由を示すFirefoxのコンソールでのエラーメッセージはありませんその特定のページで実行されます。

質問

  • なぜFirefoxの拡張機能は、いくつかのページにコンテンツスクリプトを読み込むことができませんか?

  • 拡張機能がすべてのブラウザで一貫して動作するように変更する必要はありますか?

ご協力いただきありがとうございます。

+0

あなたが提供する特定のページはWebページではなく、.mdファイルであるため、Firefoxはそこにコンテンツスクリプトを実行していないと考えています。 –

+0

@ChristosPapoulas:ご意見ありがとうございます。それにもかかわらず、私はそれが当てはまるとは思わない。たとえば、Firefox内のローカルファイルやプライベートコードリポジトリからのファイルをロードしようとすると、正常に動作しているようです。 – Pyves

答えて

2

Firefoxを使用しているときに、拡張機能のコンテンツスクリプトがいくつかのページで読み込まれていない理由を最後に分かりました。ネットワーク開発ツールとの要求を分析した後

が、それはGitHubの生のページを取得するときに以下のヘッダが返されることが判明:

Content-Security-Policy: default-src 'none'; style-src 'unsafe-inline'; sandbox 

MDN Web Docsによると、​​CSPディレクティブは、次のような効果があります。

は、要求されたリソース[...]のサンドボックスを有効にします。ポップアップの防止、プラグインとスクリプトの実行を防止する 、同じオリジンポリシー を実行するなど、ページのアクションには の制限が適用されます。

したがって、Firefoxでは、サンドボックスCSPのページでコンテンツスクリプトを実行できませんが、ChromeやOperaなどの他のブラウザではこの動作が許可されています。CSP、「サンドボックス」ディレクティブは、この問題は確認されており、うまくいけばなり

による独特の原点に、マッチングからコンテンツのスクリプトを防ぐ

:MozillaのBugzillaの(12670271411641)で関連バグレポートはことを強調しますFirefoxの将来のリリースで修正されました。

関連する問題