Manifes - Resource yang Dapat Diakses Web

Resource yang dapat diakses web adalah file di dalam ekstensi yang dapat diakses oleh halaman web atau ekstensi lainnya. Ekstensi biasanya menggunakan fitur ini untuk mengekspos gambar atau aset lain yang perlu dimuat di halaman web, tetapi aset apa pun yang disertakan dalam paket ekstensi dapat diakses web.

Secara default, tidak ada resource yang dapat diakses web, karena hal ini memungkinkan situs berbahaya untuk mengambil sidik jari ekstensi yang telah diinstal pengguna atau mengeksploitasi kerentanan (misalnya bug XSS) dalam ekstensi yang diinstal. Hanya halaman atau skrip yang dimuat dari asal ekstensi dapat mengakses resource ekstensi tersebut.

Deklarasi manifes

Gunakan properti manifes web_accessible_resources untuk mendeklarasikan resource mana yang diekspos dan ke asal mana. Properti ini adalah array objek yang mendeklarasikan aturan akses resource. Setiap objek memetakan array resource ekstensi ke array URL dan/atau ID ekstensi yang dapat mengakses resource tersebut.

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

Setiap objek dalam array berisi elemen berikut:

"resources"
Array string, yang masing-masing berisi jalur relatif ke resource tertentu dari direktori root ekstensi. Resource dapat berisi tanda bintang (*) untuk pencocokan karakter pengganti. Misalnya, "/images/*" menampilkan semua file dalam direktori images/ ekstensi, secara rekursif, sedangkan "*.png" menampilkan semua file PNG.
"matches"
Array string, yang masing-masing berisi pola pencocokan yang menentukan situs mana yang dapat mengakses kumpulan resource ini. Hanya origin yang digunakan untuk mencocokkan URL. Origin mencakup pencocokan subdomain. Google Chrome memunculkan "Pola pencocokan tidak valid" error jika polanya memiliki jalur selain '/*'.
"extension_ids"
Array string, yang masing-masing berisi ID ekstensi yang dapat mengakses resource.
"use_dynamic_url"
Jika true (benar), hanya izinkan resource untuk diakses melalui ID dinamis. ID dinamis dibuat per sesi. Artinya, ekstensi akan dibuat ulang saat browser dimulai ulang atau ekstensi dimuat ulang.

Setiap elemen harus menyertakan elemen "resources" dan elemen "matches" atau "extension_ids". Tindakan ini akan membuat pemetaan yang mengekspos resource yang ditentukan ke halaman web yang cocok dengan pola atau ekstensi dengan ID yang cocok. Elemen "use_dynamic_url" bersifat opsional.

Resource tersedia di halaman web melalui URL chrome-extension://[PACKAGE ID]/[PATH], yang dapat dibuat dengan metode runtime.getURL(). Resource disalurkan dengan header CORS yang sesuai, sehingga tersedia melalui fetch().

Navigasi dari origin web ke resource ekstensi akan diblokir kecuali jika resource tersebut tercantum sebagai dapat diakses web. Perhatikan sudut pandang berikut:

  • Jika ekstensi menggunakan webRequest API untuk mengalihkan permintaan resource publik ke resource yang tidak dapat diakses web, permintaan tersebut juga akan diblokir.
  • Hal di atas berlaku meskipun resource yang tidak dapat diakses web dimiliki oleh ekstensi pengalihan.
  • Navigasi diblokir dalam mode Samaran, kecuali jika nilai kolom "incognito" ditetapkan ke "split".

Skrip konten itu sendiri tidak perlu diizinkan.

Contoh

Contoh Web yang Dapat Diakses menunjukkan penggunaan elemen ini dalam ekstensi yang berfungsi.