Manifest: Web'den Erişilebilir Kaynaklar

Web'den erişilebilen kaynaklar, web sayfaları veya diğer uzantılar tarafından erişilebilen bir uzantı içinde yer alan dosyalardır. Uzantılar, genellikle web sayfalarına yüklenmesi gereken resimleri veya diğer öğeleri göstermek için bu özelliği kullanır. Ancak uzantının paketindeki tüm öğeler web'e erişilebilir hale getirilebilir.

Varsayılan olarak hiçbir kaynak web'e erişilemez. Bu sayede kötü amaçlı web siteleri, bir kullanıcının yüklediği uzantıları parmak iziyle izleyebilir veya yüklü uzantılardaki güvenlik açıklarından (ör. XSS hataları) yararlanabilir. 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 kullanıma sunulduğunu ve hangi kaynaklarda gösterildiğini bildirmek için web_accessible_resources manifest özelliğini kullanın. Bu özellik, kaynak erişim kurallarını bildiren bir nesne dizisidir. Her nesne birkaç uzantı kaynağını listeler ve bu kaynaklara erişebilen kaynakları belirtmek için matches veya extension_ids anahtarlarından en az biri için bir değer sağlamalıdır.

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

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

"resources"
Her biri, uzantının kök dizininden belirli bir kaynağa giden göreli bir yol içeren dize dizisi. Kaynaklar, joker karakter eşleşmeleri için yıldız işaretleri (*) içerebilir. Örneğin, "/images/*" uzantısı 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 dize dizisi. URL'leri eşleştirmek için yalnızca kaynak kullanılır. Kaynaklar, alt alan eşleşmesini içerir. Kalıpta "/*" dışında bir yol varsa Google Chrome "Geçersiz eşleşme kalıbı" hatası verir.
"extension_ids"
Her biri kaynaklara erişebilen bir uzantının kimliğini içeren dize dizisi.

Her öğe, bir "resources" öğesi ve bir "matches" veya "extension_ids" öğesi içermelidir. Böylece, belirtilen kaynakları kalıpla eşleşen web sayfalarına veya eşleşen kimliklere sahip uzantılara sunan bir eşleme oluşturulur.

Kaynaklar, chrome-extension://[PACKAGE ID]/[PATH] URL'sinin kullanıldığı bir web sayfasında bulunmaktadır. Bu URL de runtime.getURL() yöntemiyle oluşturulabilir. Kaynaklar uygun CORS başlıklarıyla yayınlandığından fetch() kullanılarak kullanılabilir.

Kaynak, web'den erişilebilir olarak listelenmeyen bir web kaynağından uzantı kaynağına gezinme engellenir. Şu önemli durumlara dikkat edin:

  • Bir uzantı, herkese açık bir kaynak isteğini web'den erişilemeyen bir kaynağa yönlendirmek için webRequest API'sini kullandığında bu tür bir istek de engellenir.
  • Herkese açık kaynaklardan yapılan yönlendirmeler, web'den erişilemeyen kaynağın sahibi yönlendirme uzantısı olsa bile engellenir.
  • "incognito" alanının değeri "split" olarak ayarlanmadığı sürece gizli modda gezinme engellenir.

İçerik komut dosyalarına izin verilmesi gerekmez.

Örnek

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