Penyimpanan dan cookie

Ekstensi dapat menyimpan cookie dan mengakses API penyimpanan web dengan cara yang sama seperti situs normal. Namun, dalam beberapa kasus, perilaku ini berbeda di ekstensi.

Lihat browser.storage untuk mengetahui informasi tentang extension API.

Penyimpanan

Sering kali diinginkan untuk menggunakan API penyimpanan platform web di ekstensi. Bagian ini membahas perilaku API ini dalam konteks ekstensi, yang terkadang berbeda dengan perilaku API di web.

Persistensi

Penyimpanan ekstensi tidak dihapus saat pengguna menghapus data penjelajahan. Hal ini berlaku untuk data apa pun 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 tekanan memori berat, meskipun hal ini jarang terjadi. Untuk menghindarinya:

  • Minta izin "unlimitedStorage", yang memengaruhi API penyimpanan web dan ekstensi serta mengecualikan ekstensi dari pembatasan kuota dan penghapusan.
  • Hubungi navigator.storage.persist() untuk mendapatkan perlindungan dari penggusuran.

Penyimpanan ekstensi dibagikan di seluruh origin ekstensi, termasuk service worker ekstensi, halaman ekstensi (termasuk pop-up dan panel samping), dan dokumen di luar layar. Dalam skrip konten, pemanggilan API penyimpanan web mengakses data dari halaman host tempat skrip konten disisipkan, bukan ekstensi.

Akses di pekerja layanan

API IndexedDB dan Cache Storage dapat diakses di pekerja layanan. Namun, Penyimpanan Lokal dan Penyimpanan Sesi tidak.

Jika Anda perlu mengakses Local Storage atau Session Storage dari service worker, gunakan dokumen di luar layar.

Membuat partisi

Partisi adalah tempat kunci diperkenalkan untuk data tersimpan guna membatasi tempat data tersebut dapat diakses. Penyimpanan secara historis telah dikunci berdasarkan asal.

Mulai Chrome 115, partisi penyimpanan memperkenalkan perubahan pada cara kunci partisi ditentukan untuk mencegah jenis pelacakan lintas situs tertentu. Dalam praktiknya, hal ini berarti jika situs A menyematkan iframe yang berisi situs B, situs B tidak akan dapat mengakses penyimpanan yang sama yang biasanya dimilikinya saat diakses secara langsung.

Untuk memitigasi dampak ini dalam ekstensi, dua pengecualian berlaku:

  • Jika halaman dengan skema chrome-extension:// disematkan di situs mana pun, partisi penyimpanan tidak akan berlaku, 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 disematkannya, situs tersebut juga akan memiliki akses ke partisi tingkat teratasnya.

Cookie

Cookie menyediakan cara untuk menyimpan key-value pair yang terkait dengan domain dan jalur tertentu. Nilainya terbatas dalam ekstensi, 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 menyetel cookie dengan atribut ini.

Artinya juga bahwa halaman ekstensi tidak dapat menggunakan atribut cookie lain jika atribut Secure diperlukan:

Perilaku pembuatan partisi dan SameSite

Cookie yang ditetapkan di halaman chrome-extension:// selalu menggunakan SameSite=Lax. Oleh karena itu, cookie yang ditetapkan oleh ekstensi di asalnya sendiri tidak akan pernah dapat diakses dalam frame dan partisi 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 hal:

  • Cookie pihak ketiga tidak pernah diblokir, bahkan di subframe jika halaman tingkat teratas untuk tab tertentu adalah halaman chrome-extension://.
  • Permintaan dari ekstensi ke pihak ketiga diperlakukan sebagai permintaan lintas situs jika ekstensi memiliki izin host untuk pihak ketiga. Artinya, cookie SameSite=Strict dapat dikirim. Perhatikan bahwa ini hanya berlaku untuk permintaan jaringan, bukan akses melalui document.cookie di JavaScript, dan tidak berlaku jika cookie pihak ketiga diblokir.

Perhatikan bahwa setelan terkait cookie pihak ketiga dipengaruhi oleh pekerjaan Privacy Sandbox dan disesuaikan sesuai linimasanya.

API browser.cookies memberikan kontrol atas kunci partisi yang akan digunakan dengan setiap metode API. Untuk mengetahui informasi selengkapnya, lihat referensi API.