Penyimpanan dan cookie

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 melalui document.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.