Ekstensi dapat menyimpan cookie dan mengakses API penyimpanan web seperti situs biasa. Namun, dalam beberapa kasus, perilaku ini berperilaku berbeda dalam ekstensi.
Lihat chrome.storage
untuk mengetahui informasi tentang API ekstensi.
Penyimpanan
Sebaiknya Anda menggunakan API penyimpanan platform web dalam ekstensi. Bagian ini membahas perilaku API ini dalam konteks ekstensi, yang terkadang dapat berbeda dengan perilakunya di web.
Persistensi
Penyimpanan ekstensi tidak dihapus jika pengguna menghapus data penjelajahan. Hal ini berlaku untuk data yang disimpan menggunakan API penyimpanan web (seperti Local Storage dan IndexedDB).
Secara default, ekstensi tunduk pada batasan kuota normal pada penyimpanan, yang dapat diperiksa
dengan memanggil navigator.storage.estimate()
. Penyimpanan juga dapat dikeluarkan saat terjadi tekanan memori berat, meskipun ini jarang terjadi. Untuk menghindari hal ini:
- Minta izin
"unlimitedStorage"
, yang memengaruhi API penyimpanan web dan ekstensi, serta mengecualikan ekstensi dari pembatasan kuota dan penghapusan. - Panggil
navigator.storage.persist()
untuk mendapatkan perlindungan terhadap penggusuran.
Penyimpanan ekstensi digunakan bersama di seluruh origin ekstensi, termasuk pekerja layanan ekstensi, semua halaman ekstensi (termasuk pop-up dan panel samping), serta dokumen di luar layar. Dalam skrip konten, memanggil API penyimpanan web akan mengakses data dari halaman host tempat skrip konten dimasukkan, bukan ekstensi.
Akses di pekerja layanan
API IndexedDB dan Cache Storage dapat diakses di pekerja layanan. Namun, Local Storage dan Session Storage tidak demikian.
Jika Anda perlu mengakses Penyimpanan Lokal atau Penyimpanan Sesi dari pekerja layanan, gunakan dokumen di luar layar.
Membuat partisi
Partisi adalah tempat pengenalan kunci untuk data yang disimpan guna membatasi tempat data dapat diakses. Secara historis, penyimpanan dikunci berdasarkan origin.
Mulai Chrome 115, partisi penyimpanan memperkenalkan perubahan pada cara penentuan kunci partisi untuk mencegah jenis pelacakan lintas situs tertentu. Dalam praktiknya, hal ini berarti bahwa jika situs A menyematkan iframe yang berisi situs B, situs B tidak akan dapat mengakses penyimpanan yang sama seperti biasanya ketika dibuka secara langsung.
Untuk mengurangi dampak hal ini pada ekstensi, dua pengecualian berlaku:
- Jika halaman dengan skema
chrome-extension://
disematkan di situs mana pun, partisi penyimpanan tidak akan diterapkan, dan ekstensi akan memiliki akses ke partisi tingkat teratasnya. - Jika halaman dengan skema
chrome-extension://
menyertakan iframe, dan ekstensi memiliki izin host untuk situs yang disematkan, situs tersebut juga akan memiliki akses ke partisi tingkat teratasnya.
Kukis
Cookie memberikan cara untuk menyimpan pasangan nilai kunci yang terkait dengan domain dan jalur tertentu. Ekstensi memiliki nilai yang terbatas, tetapi memahami perilakunya dapat berguna jika Anda memiliki kasus penggunaan tertentu atau telah memaketkan skrip pihak ketiga yang menggunakannya dalam penerapannya.
Cookie aman
Atribut cookie Secure
hanya didukung untuk skema
https://
. Akibatnya, halaman chrome-extension://
tidak dapat menetapkan cookie dengan atribut ini.
Hal ini juga berarti bahwa halaman ekstensi tidak dapat menggunakan atribut cookie lain yang memerlukan atribut Secure
:
Perilaku partisi dan SameSite
Cookie yang ditetapkan di halaman chrome-extension:// selalu menggunakan SameSite=Lax
.
Akibatnya, cookie yang ditetapkan oleh ekstensi pada asalnya sendiri tidak akan dapat diakses dalam frame dan partisi menjadi tidak relevan.
Untuk cookie yang terkait dengan situs pihak ketiga, seperti untuk situs pihak ketiga yang dimuat dalam frame di halaman ekstensi, atau permintaan yang dibuat dari halaman ekstensi ke origin pihak ketiga, cookie berperilaku sama seperti web, kecuali dalam dua cara:
- Cookie pihak ketiga tidak akan pernah diblokir bahkan di subframe jika halaman tingkat atas
untuk tab tertentu adalah halaman
chrome-extension://
. - Permintaan dari ekstensi ke pihak ketiga diperlakukan sebagai situs yang sama jika ekstensi tersebut memiliki izin host untuk pihak ketiga tersebut. Ini berarti cookie
SameSite=Strict
dapat dikirim. Perlu diketahui bahwa ketentuan ini hanya berlaku untuk permintaan jaringan, bukan akses melaluidocument.cookie
di JavaScript, dan tidak berlaku jika cookie pihak ketiga diblokir.
Perlu diperhatikan bahwa setelan seputar cookie pihak ketiga dipengaruhi oleh pekerjaan Privacy Sandbox dan disesuaikan menurut linimasanya.
chrome.cookies
API memberikan kontrol atas kunci partisi
untuk digunakan dengan setiap metode API. Untuk mengetahui informasi selengkapnya, baca
Referensi API.