Manifes - Resource yang Dapat Diakses Web

Sumber daya yang dapat diakses dari web adalah file di dalam ekstensi yang dapat diakses oleh laman web atau ekstensi. Ekstensi biasanya menggunakan fitur ini untuk menampilkan gambar atau aset lain yang perlu dimuat di halaman web, tetapi aset apa pun yang termasuk dalam paket ekstensi dapat diakses dari web.

Secara default tidak ada resource yang dapat diakses dari web, karena hal ini memungkinkan situs berbahaya mendapatkan ekstensi sidik jari yang telah diinstal pengguna atau mengeksploitasi kerentanan (misalnya bug XSS) di 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 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 matches atau kunci extension_ids untuk 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 berikut:

"resources"
Array string, masing-masing berisi jalur relatif ke resource tertentu dari direktori utama 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, 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, masing-masing berisi ID ekstensi yang dapat mengakses resource.

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

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

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

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

Skrip konten itu sendiri tidak perlu diizinkan.

Contoh

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