V2 マニフェストを V3 マニフェストに変換する
Manifest V3 と Manifest V2 では、manifest.json
ファイルの形式が若干異なります。このページでは、manifest.json
ファイルにのみ影響する変更について説明します。ただし、スクリプトやページに対する変更の多くでは、マニフェストも変更する必要があります。これらの変更は、それを必要とする移行タスクでカバーされます。
マニフェストのバージョン番号を変更する
"manifest_version"
フィールドの値を 2 から 3 に変更します。
{ ... "manifest_version": 2 ... }
{ ... "manifest_version": 3 ... }
ホストの権限を更新する
Manifest V3 のホスト権限は個別のフィールドであり、"permissions"
または "optional_permissions"
では指定しません。
コンテンツ スクリプトは "content_scripts.matches"
に残ります。"content_scripts.matches"
については、静的宣言を使用したインジェクションをご覧ください。
{ ... "permissions": [ "tabs", "bookmarks", "https://www.blogger.com/", ], "optional_permissions": [ "unlimitedStorage", "*://*/*", ] ... }
{ ... "permissions": [ "tabs", "bookmarks" ], "optional_permissions": [ "unlimitedStorage" ], "host_permissions": [ "https://www.blogger.com/", ], "optional_host_permissions": [ "*://*/*", ] ... }
ウェブでアクセス可能なリソースを更新する
ウェブでアクセス可能なリソースとは、ウェブページや他の拡張機能がアクセスできる拡張機能内のファイルです。Manifest V2 で実装されている "web_accessible_resources"
フィールドにより、リソースの公開が選択されている場合、ウェブサイトや攻撃者が拡張機能を検出できるようになりました。これにより、フィンガープリントや意図しないリソース アクセスの機会が生まれました。
Manifest V3 では、拡張機能のリソースにアクセスできるウェブサイトや拡張機能を制限することで、公開を制限しています。これまでと同様にファイルのリストを指定するのではなく、オブジェクトの配列を指定するようになりました。オブジェクトの配列は、一連のリソースを URL または拡張機能 ID のセットにマッピングします。
以下の例では、Manifest V2 と Manifest V3 のウェブでアクセス可能なリソースを比較しています。Manifest V2 では、デフォルトで、指定されたリソースにすべてのウェブサイトでアクセスできるようにしていました。以下に示す Manifest V3 コードでは、これらのリソースは https://example.com
のみが使用でき、すべてのウェブサイトで特定の画像のみを使用できます。
詳しくは、ウェブでアクセス可能なリソースと一致パターンをご覧ください。
{ ... "web_accessible_resources": [ "images/*", "style/extension.css", "script/extension.js" ], ... }
{ ... "web_accessible_resources": [ { "resources": [ "images/*" ], "matches": [ "*://*/*" ] }, { "resources": [ "style/extension.css", "script/extension.js" ], "matches": [ "https://example.com/*" ] } ], ... }