可透過網頁存取的資源是指擴充功能中的檔案,可供網頁或其他存取 。擴充功能通常會使用這項功能,公開需要在網頁中載入的圖片或其他素材資源,但擴充功能套件中包含的任何素材資源都可以讓網路存取。
在預設情況下,沒有任何資源可供網路存取,因為這可讓惡意網站對使用者安裝的惡意網站執行指紋擴充功能 或利用已安裝的擴充功能中的安全漏洞 (例如 XSS 錯誤)。只有從擴充功能來源載入的網頁或指令碼,才能存取該擴充功能的資源。
資訊清單宣告
使用 web_accessible_resources
資訊清單屬性,宣告要公開哪些資源,以及要公開給哪些來源。這個屬性是宣告資源存取規則的物件陣列。每個物件會將擴充功能資源陣列對應至可存取這些資源的網址和/或擴充功能 ID 陣列。
{
...
"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/*" ],
"use_dynamic_url": true
}
],
...
}
陣列中的每個物件都包含以下元素:
"resources"
- 字串陣列,每個字串都包含擴充功能根目錄中指定資源的相對路徑。資源可能會包含萬用字元比對的星號 (
*
),舉例來說,"/images/*"
會以遞迴方式顯示擴充功能images/
目錄中的所有內容,而"*.png"
則會公開所有 PNG 檔案。 "matches"
- 字串陣列,每個字串都包含一個「比對模式」,用於指定哪些網站可以存取這組資源。系統只會使用來源來比對網址。來源包含子網域比對。如果模式的路徑不是 '/*',Google Chrome 會傳回「Invalid match pattern」錯誤。
"extension_ids"
- 字串陣列,每個字串都包含可存取資源的擴充功能 ID。
"use_dynamic_url"
- 如果為 true,則只允許透過動態 ID 存取資源。每個工作階段都會產生動態 ID。也就是說,瀏覽器重新啟動或擴充功能重新載入時,系統會重新產生此值。
每個元素都必須包含 "resources"
元素,以及 "matches"
或 "extension_ids"
元素。這會建立對應,將指定資源公開至符合該模式的網頁或具有相符 ID 的擴充功能。"use_dynamic_url"
為選用元素。
資源的導覽性
您可以透過網址 chrome-extension://[PACKAGE ID]/[PATH]
在網頁中使用資源,而這項網址可透過 runtime.getURL()
方法產生。這些資源會搭配適當的 CORS 標頭提供,因此可透過 fetch()
使用。
從網路來源前往擴充功能資源的導覽功能會遭到封鎖, 並列為可在網路上存取請注意以下極端情況:
- 如果擴充功能使用 webRequest API,將公開資源要求重新導向至無法透過網路存取的資源,這類要求也會遭到封鎖。
- 即使無法透過網路存取的資源是由重新導向外掛程式所擁有,上述情況仍適用。
- 啟用無痕模式時,除非
"incognito"
欄位的值設為"split"
,否則使用無痕模式時,瀏覽功能遭到封鎖。
您不需要允許內容指令碼本身。
範例
Web Accessable Resources 範例:示範如何在工作擴充功能中使用這個元素。