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 direktoriimages/
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.
Navigasi resource
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.