Manifest: Web'den Erişilebilir Kaynaklar

Web'den erişilebilen kaynaklar, bir uzantıdaki ve web sayfaları veya diğer uzantılar tarafından erişilebilen dosyalardır. Uzantılar genellikle bu özelliği, web sayfalarına yüklenmesi gereken resimleri veya diğer öğeleri göstermek için kullanır ancak bir uzantının paketine dahil edilen tüm öğeler web'de erişilebilir hale getirilebilir.

Varsayılan olarak, web'den hiçbir kaynağa erişilemez. Bu, kötü amaçlı bir web sitesinin kullanıcının yüklediği uzantıların parmak izini almasına veya yüklü uzantılardaki güvenlik açıklarından (ör. XSS hataları) yararlanmasına olanak tanır. Yalnızca bir uzantının kaynağından yüklenen sayfalar veya komut dosyaları bu uzantının kaynaklarına erişebilir.

Manifest beyanı

Hangi kaynakların hangi kaynaklara gösterileceğini belirtmek için web_accessible_resources manifest mülkünü kullanın. Bu özellik, kaynak erişim kurallarını bildiren bir nesne dizisidir. Her bir nesne bir uzantı kaynakları dizisini, bu kaynaklara erişebilen bir URL ve/veya uzantı kimlikleri dizisiyle eşleştirir.

{
  ...
  "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
    }
  ],
  ...
}

Dizideki her nesne şu öğeleri içerir:

"resources"
Her biri, uzantının kök dizininden belirli bir kaynağa giden göreli bir yolu içeren dize dizisi. Kaynaklar, joker karakter eşlemeleri için yıldız işareti (*) içerebilir. Örneğin, "/images/*", uzantının images/ dizinindeki her şeyi yinelemeli olarak gösterirken "*.png" tüm PNG dosyalarını gösterir.
"matches"
Her biri, bu kaynak grubuna hangi sitelerin erişebileceğini belirten bir eşleşme kalıbı içeren bir dize dizisi. URL'leri eşleştirmek için yalnızca kaynak kullanılır. Kaynaklar, alt alan adı eşleştirmeyi içerir. Google Chrome, kalıpta "/*" dışında bir yol varsa "Geçersiz eşleşme kalıbı" hatası verir.
"extension_ids"
Her biri, kaynaklara erişebilen bir uzantının kimliğini içeren bir dize dizisi.
"use_dynamic_url"
Doğruysa kaynaklara yalnızca dinamik kimlik üzerinden erişilmesine izin verin. Oturum başına dinamik bir kimlik oluşturulur. Yani tarayıcı yeniden başlatıldığında veya uzantı yeniden yüklendiğinde yeniden oluşturulur.

Her öğe bir "resources" öğesi ve bir "matches" veya "extension_ids" öğesi içermelidir. Bu işlem, belirtilen kaynakları kalıpla eşleşen web sayfalarına veya eşleşen kimliklere sahip uzantılara gösteren bir eşleme oluşturur. "use_dynamic_url" öğesi isteğe bağlıdır.

Bir web sayfasındaki kaynaklara URL yoluyla erişilebilir chrome-extension://[PACKAGE ID]/[PATH] (runtime.getURL() ile oluşturulabilir) yöntemidir. Kaynaklar uygun CORS başlıklarıyla sunulur. Böylece kullanılabilirler fetch() üzerinden.

Kaynak web'de erişilebilir olarak listelenmediği sürece, web kaynağından uzantı kaynağına geçiş engellenir. Şu köşede yer alan durumlara dikkat edin:

  • Bir uzantı, herkese açık bir alanı yönlendirmek için webRequest API'yi kullandığında Web erişimi olmayan bir kaynağa yapılan kaynak istekleri de engellenir.
  • Yukarıdaki durum, web'e erişilemeyen kaynağın yönlendiren uzantıya ait olması durumunda bile geçerlidir.
  • "incognito" alanının değeri "split" olarak ayarlanmazsa gizli modda gezinme engellenir.

İçerik komut dosyalarına izin verilmesi gerekmez.

Örnek

Web'den Erişilebilir Kaynaklar örneği, bu öğenin çalışan bir uzantıda kullanımını gösterir.