マニフェストを更新する

V2 マニフェストを V3 マニフェストに変換する

manifest.json ファイルの形式は、Manifest V3 と Manifest V2 で若干異なります。このページでは、manifest.json ファイルにのみ影響する変更について説明します。ただし、スクリプトとページの変更の多くは、マニフェストの変更も必要とします。これらの変更は、変更を必要とする移行タスクでカバーされます。

マニフェストのバージョン番号を変更する

"manifest_version" フィールドの値を 2 から 3 に変更します。

Manifest V2
{
 
...
 
"manifest_version": 2
 
...
}
Manifest V3
{
 
...
 
"manifest_version": 3
 
...
}

ホストの権限を更新する

Manifest V3 のホスト権限は個別のフィールドです。"permissions""optional_permissions" で指定することはできません。

コンテンツ スクリプト"content_scripts.matches" に残ります。"content_scripts.matches" の詳細については、静的宣言で挿入するをご覧ください。

Manifest V2
{
 
...
 
"permissions": [
   
"tabs",
   
"bookmarks",
   
"https://www.blogger.com/",
 
],
 
"optional_permissions": [
   
"unlimitedStorage",
   
"*://*/*",
 
]
 
...
}
Manifest V3
{
 
...
 
"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 の間でウェブからアクセス可能なリソースを比較しています。マニフェスト V2 では、指定されたリソースにはデフォルトですべてのウェブサイトがアクセスできました。以下の Manifest V3 コードでは、これらのリソースは https://example.com でのみ使用でき、特定の画像のみがすべてのウェブサイトで使用できます。

詳細については、ウェブでアクセス可能なリソース一致パターンをご覧ください。

Manifest V2
{
 
...
 
"web_accessible_resources": [
   
"images/*",
   
"style/extension.css",
   
"script/extension.js"
 
],
 
...
}
Manifest V3
{
 
...
   
"web_accessible_resources": [
   
{
     
"resources": [
       
"images/*"
     
],
     
"matches": [
       
"*://*/*"
     
]
   
},
   
{
     
"resources": [
       
"style/extension.css",
       
"script/extension.js"
     
],
     
"matches": [
       
"https://example.com/*"
     
]
   
}
 
],
 
...
}