マニフェスト - ウェブでアクセス可能なリソース

ウェブアクセス可能なリソースとは、ウェブページやその他のアプリケーションがアクセスできる拡張機能内のファイルのことです。 できます。拡張機能は通常、この機能を使用して、表示する必要のある画像やその他のアセットを公開します。 がウェブページに読み込まれますが、拡張機能のバンドルに含まれるすべてのアセットは、ウェブアクセス可能にできます。

デフォルトでは、どのリソースにもウェブアクセスは不可能。ユーザーがインストールした拡張機能が悪意のあるウェブサイトによってフィンガープリントされてしまう可能性があるため インストールされている拡張機能の脆弱性(XSS バグなど)を悪用する。拡張機能の生成元から読み込まれたページまたはスクリプトのみ その拡張機能のリソースにアクセスできます

マニフェストの宣言

web_accessible_resources マニフェスト プロパティを使用して、公開されるリソースと公開されるリソースを宣言する 基づいています。このプロパティは、リソースのアクセスルールを宣言するオブジェクトの配列です。オブジェクトごとに 複数の拡張機能リソースをリストします。matches または これらのリソースにアクセスできるオリジンを示す extension_ids キー。

{
  ...
  "web_accessible_resources": [
    {
      "resources": [ "test1.png", "test2.png" ],
      "matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
    }, {
      "resources": [ "test3.png", "test4.png" ],
      "matches": [ "https://web-accessible-resources-2.glitch.me/*" ]
    }
  ],
  ...
}

配列内の各オブジェクトには次の要素が含まれます。

"resources"
文字列の配列。各文字列には、拡張機能のルート ディレクトリから特定のリソースへの相対パスが含まれています。ワイルドカードの一致では、リソースにアスタリスク(*)を含めることができます。たとえば、"/images/*" は拡張機能の images/ ディレクトリ内のすべての要素を再帰的に公開し、"*.png" はすべての PNG ファイルを公開します。
"matches"
文字列の配列。各文字列には、このリソースセットにアクセスできるサイトを指定する一致パターンが含まれています。オリジンのみが URL の照合に使用されます。オリジンにはサブドメイン マッチングも含まれます。Google Chrome で「無効な一致パターン」と表示されるパターンに「/*」以外のパスがあるとエラーが発生します。
"extension_ids"
文字列の配列。各文字列には、リソースにアクセスできる拡張機能の ID が含まれています。

各要素には、"resources" 要素と、"matches" 要素または "extension_ids" 要素のいずれかを含める必要があります。これにより、指定したリソースをパターンに一致するウェブページまたは ID が一致する拡張機能に公開するためのマッピングが確立されます。

URL を使用してウェブページでリソースを利用可能 chrome-extension://[PACKAGE ID]/[PATH]: runtime.getURL() で生成できます。 メソッドを呼び出します。リソースは適切な CORS ヘッダー付きで提供されるため、使用できる fetch() を使用します。

ウェブオリジンから拡張機能リソースへのナビゲーションは、そのリソースが リストされているとします次のような特殊なケースに注意してください。

  • 拡張機能が webRequest API を使用してパブリック インターネットをリダイレクトする場合 ウェブアクセスできないリソースにリソース リクエストをリクエストした場合も、ブロックされます。
  • 公開リソースからのリダイレクトは、ウェブアクセスできないリソースがリダイレクト元によって所有されている場合でもブロックされます。 あります。
  • シークレット モードでは、"incognito" フィールドの値が "split" に設定されていない限り、ナビゲーションはブロックされます。

コンテンツ スクリプト自体を許可する必要はありません。

ウェブでアクセス可能なリソースの例では、機能する拡張機能でこの要素を使用する方法を説明しています。