資訊清單 - 可供網路存取的資源

可透過網頁存取的資源是指擴充功能中的檔案,可供網頁或其他存取 。擴充功能通常會使用這項功能,公開需要在網頁中載入的圖片或其他素材資源,但擴充功能套件中包含的任何素材資源都可以讓網路存取。

在預設情況下,沒有任何資源可供網路存取,因為這可讓惡意網站對使用者安裝的惡意網站執行指紋擴充功能 或利用已安裝的擴充功能中的安全漏洞 (例如 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 範例:示範如何在工作擴充功能中使用這個元素。