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

可透過網路存取的資源是指擴充功能中的檔案,可透過網頁或其他擴充功能存取。擴充功能通常會使用這項功能,公開需要載入至網頁的圖片或其他資產,但擴充功能套裝組合中的所有資產都可以讓網路存取。

根據預設,沒有任何資源可透過網路存取,因為這樣可以讓惡意網站指紋擴充功能 (使用者安裝的擴充功能中) 或利用安全漏洞 (例如 XSS 錯誤)。只有從擴充功能來源載入的網頁或指令碼才能存取該擴充功能的資源。

資訊清單宣告

使用 web_accessible_resources 資訊清單屬性宣告要公開哪些資源和資源。這個屬性是宣告資源存取規則的物件陣列。每個物件都會列出多項擴充功能資源,且至少須提供一個 matchesextension_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"
字串陣列,每個字串都包含一個「比對模式」,用於指定哪些網站可以存取這組資源。系統只會使用來源來比對網址,來源包括子網域比對。如果模式的路徑包含「/*」以外的路徑,Google Chrome 會顯示「無效的比對模式」錯誤。
"extension_ids"
字串陣列,每個字串皆包含可存取資源的擴充功能 ID。

每個元素都必須包含 "resources" 元素,以及 "matches""extension_ids" 元素。這會建立對應,將指定資源公開至符合模式的網頁或具有相符 ID 的擴充功能。

您可以透過網址 chrome-extension://[PACKAGE ID]/[PATH] 在網頁上取得資源,您可以使用 runtime.getURL() 方法產生該網址。資源會以適當的 CORS 標頭提供,因此可以使用 fetch() 使用。

系統會禁止從網路來源到擴充功能資源的瀏覽功能,除非將該資源列為可供網路存取。請注意以下極端情況:

  • 當擴充功能使用 webRequest API 將公開資源要求重新導向至不在網路上存取的資源時,這類要求也會遭到封鎖。
  • 即使重新導向擴充功能擁有不開放網路存取的資源,系統仍會繼續封鎖來自公開資源的重新導向。
  • 除非 "incognito" 欄位的值設為 "split",否則無法在無痕模式下瀏覽。

您不需要允許使用內容指令碼本身。

範例

網頁可存取的資源範例示範如何在工作擴充功能中使用這個元素。