Untuk menggunakan sebagian besar fitur dan API ekstensi, Anda harus mendeklarasikan intent ekstensi di kolom izin manifes. Ekstensi dapat meminta kategori izin berikut, yang ditentukan menggunakan kunci manifes masing-masing:
"permissions"
- Berisi item dari daftar string yang diketahui. Perubahan dapat memicu peringatan.
"optional_permissions"
- Diberikan oleh pengguna saat runtime, bukan pada waktu penginstalan.
"content_scripts.matches"
- Berisi satu atau beberapa pola pencocokan yang memungkinkan skrip konten dimasukkan ke satu atau beberapa host. Perubahan dapat memicu peringatan.
"host_permissions"
- Berisi satu atau beberapa pola pencocokan yang memberikan akses ke satu atau beberapa host. Perubahan dapat memicu peringatan.
"optional_host_permissions"
- Diberikan oleh pengguna saat runtime, bukan pada saat penginstalan.
Izin membantu membatasi kerusakan jika ekstensi Anda disusupi malware. Beberapa peringatan izin ditampilkan kepada pengguna untuk meminta izin mereka sebelum penginstalan atau saat runtime, seperti yang dijelaskan dalam Izin dengan peringatan.
Pertimbangkan untuk menggunakan izin opsional setiap kali fungsi yang diizinkan oleh ekstensi Anda, untuk memberi pengguna kontrol yang tepat atas akses ke resource dan data.
Jika API memerlukan izin, dokumentasinya menjelaskan cara mendeklarasikannya. Untuk contohnya, lihat Storage API.
Manifes
Berikut adalah contoh bagian izin file manifes:
manifest.json:
{
"name": "Permissions Extension",
...
"permissions": [
"activeTab",
"contextMenus",
"storage"
],
"optional_permissions": [
"topSites",
],
"host_permissions": [
"https://www.developer.chrome.com/*"
],
"optional_host_permissions":[
"https://*/*",
"http://*/*"
],
...
"manifest_version": 3
}
Izin host
Izin host memungkinkan ekstensi berinteraksi dengan pola pencocokan URL. Beberapa Chrome API memerlukan izin host selain izin API-nya sendiri, yang didokumentasikan di setiap halaman referensi. Berikut beberapa contohnya:
- Buat permintaan
fetch()
dari pekerja layanan ekstensi dan halaman ekstensi. - Baca dan buat kueri untuk properti tab sensitif (url, judul, dan favIconUrl) menggunakan
chrome.tabs
API. - Memasukkan skrip konten secara terprogram.
- Pantau dan kontrol permintaan jaringan dengan
chrome.webRequest
API. - Mengakses cookie dengan
chrome.cookies
API. - Alihkan dan ubah header respons dan permintaan menggunakan
chrome.declarativeNetRequest
API.
Izin dengan peringatan
Jika ekstensi meminta beberapa izin, dan banyak di antaranya menampilkan peringatan saat penginstalan, pengguna akan melihat daftar peringatan, seperti dalam contoh berikut:
Pengguna lebih cenderung memercayai ekstensi yang memiliki peringatan terbatas atau saat izin dijelaskan kepada mereka. Pertimbangkan untuk menerapkan izin opsional atau API yang kurang canggih untuk menghindari peringatan yang berbunyi. Untuk mengetahui praktik terbaik terkait peringatan, lihat Panduan peringatan izin. Peringatan tertentu dicantumkan dengan izin yang berlaku dalam daftar referensi Izin.
Menambahkan atau mengubah pola pencocokan di kolom "host_permissions"
dan "content_scripts.matches"
pada file manifes juga akan memicu peringatan. Untuk mempelajari lebih lanjut, lihat
Memperbarui izin.
Izinkan akses
Jika ekstensi Anda perlu dijalankan di URL file://
atau beroperasi dalam mode samaran, pengguna harus memberikan akses ekstensi di halaman detail. Anda dapat menemukan petunjuk untuk membuka halaman detail di bagian Kelola ekstensi.
Izinkan akses ke URL file dan halaman samaran
- Klik kanan ikon ekstensi di Chrome.
Pilih Kelola Ekstensi.
Scroll ke bawah untuk mengaktifkan akses ke URL file atau mode samaran.
Untuk mendeteksi apakah pengguna telah mengizinkan akses, Anda dapat memanggil extension.isAllowedIncognitoAccess()
atau
extension.isAllowedFileSchemeAccess()
.