Manifes - Resource yang Dapat Diakses Web

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

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

Deklarasi manifes

Gunakan properti manifes web_accessible_resources untuk mendeklarasikan resource mana yang diekspos dan ke asal apa. Properti ini adalah array objek yang mendeklarasikan aturan akses resource. Setiap objek mencantumkan sejumlah resource ekstensi dan harus memberikan nilai setidaknya untuk salah satu kunci matches atau extension_ids guna menunjukkan origin yang dapat mengakses resource ini.

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

Setiap objek dalam array berisi elemen-elemen ini:

"resources"
Array string, masing-masing berisi jalur relatif ke resource yang diberikan dari direktori utama ekstensi. Resource dapat berisi tanda bintang (*) untuk kecocokan karakter pengganti. Misalnya, "/images/*" mengekspos semua yang ada di direktori images/ ekstensi secara berulang, sedangkan "*.png" mengekspos semua file PNG.
"matches"
Array string, masing-masing berisi pola pencocokan yang menentukan situs mana yang dapat mengakses kumpulan resource ini. Hanya origin yang akan digunakan untuk mencocokkan URL. Asal mencakup pencocokan subdomain. Google Chrome akan memunculkan error "Invalid match Pola" jika pola memiliki jalur selain '/*'.
"extension_ids"
Array string, yang masing-masing berisi ID ekstensi yang dapat mengakses resource.

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

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

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

  • Jika ekstensi menggunakan webRequest API untuk mengalihkan permintaan resource publik ke resource yang tidak dapat diakses oleh web, permintaan tersebut juga akan diblokir.
  • Pengalihan dari resource publik akan diblokir meskipun resource yang tidak dapat diakses oleh web dimiliki oleh ekstensi pengalihan.
  • Navigasi diblokir dalam mode samaran kecuali jika nilai kolom "incognito" disetel ke "split".

Skrip konten itu sendiri tidak perlu diizinkan.

Contoh

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