Chrome 115 memperkenalkan perubahan pada API penyimpanan, pekerja layanan, dan komunikasi dengan mempartisi dalam konteks pihak ketiga. Selain diisolasi oleh kebijakan origin yang sama, API yang terpengaruh dan digunakan dalam konteks pihak ketiga juga diisolasi oleh situs konteks tingkat atas.
Situs yang belum memiliki waktu untuk mengimplementasikan dukungan bagi partisi penyimpanan pihak ketiga dapat mengikuti uji coba penghentian penggunaan untuk membatalkan partisi untuk sementara (melanjutkan isolasi oleh kebijakan origin yang sama, tetapi menghapus isolasi oleh situs tingkat atas) dan memulihkan perilaku sebelumnya untuk API penyimpanan, pekerja layanan, dan komunikasi, dalam konten yang disematkan di situs mereka. Uji coba penghentian ini akan berakhir dengan rilis Chrome 127 pada 3 September 2024. Perhatikan bahwa ini terpisah dari uji coba penghentian penggunaan untuk akses ke cookie pihak ketiga: ini hanya untuk akses ke penyimpanan.
Sebagai solusi jangka panjang untuk mengatasi kasus penggunaan tertentu yang terganggu oleh partisi penyimpanan non-cookie pihak ketiga, Chrome mengusulkan kemampuan bagi pihak ketiga untuk meminta akses penyimpanan/komunikasi (baik cookie maupun non-cookie) melalui Storage Access API (pengiriman mulai Chrome 117), yang telah memungkinkan pihak ketiga meminta akses cookie.
Mulai Chrome 120, proposal ini akan tersedia untuk eksperimen melalui uji coba origin. Developer harus berpartisipasi dalam uji coba origin ini untuk mengevaluasi cara solusi yang diusulkan menangani kasus penggunaan mereka untuk memastikan mereka siap sebelum uji coba penghentian penggunaan berakhir.
Detail uji coba origin
Mulai Chrome 120, Chrome akan mendukung uji coba origin, StorageAccessAPIBeyondCookies, untuk mengaktifkan ekstensi Storage Access API yang diusulkan (kompatibel dengan versi lama) guna mengizinkan akses ke penyimpanan tanpa partisi (cookie dan non-cookie) dalam konteks pihak ketiga.
Mekanika
API ini dapat digunakan sebagai berikut (JavaScript berjalan dalam iframe tersemat):
// Request a new storage handle via rSA (this should prompt the user)
const handle = await document.requestStorageAccess({all: true});
// Write some 1P context sessionStorage
handle.sessionStorage.setItem('userid', '1234');
// Write some 1P context localStorage
handle.localStorage.setItem('preference', 'A');
// Open or create an indexedDB that is shared with the 1P context
const messageDB = handle.indexedDB.open('messages');
// Use locks shared with the 1P context
await handle.locks.request('example', ...);
Jika Anda hanya menginginkan akses API tertentu, bukan akses ke all
, Anda dapat meneruskan nama tuas API saja yang Anda butuhkan. Misalnya, Anda dapat meneruskan {sessionStorage: true}
untuk mendapatkan akses ke Penyimpanan Sesi, atau {indexedDB: true, locks:true}
untuk mendapatkan akses ke IndexedDB dan Web Locks.
Selain memanggil ekstensi tambahan ini, akses ke penyimpanan non-cookie akan sesuai dengan persyaratan saat ini untuk akses cookie melalui Storage Access API. Misalnya, di Chrome, tidak ada dialog yang ditampilkan jika asalnya berada di Set Situs Terkait yang sama (RWS, nama baru untuk Set Pihak Pertama). Origin yang bukan bagian dari RWS yang sama akan tunduk pada persyaratan perintah Storage Access API di Chrome.
Durasi
Uji coba origin akan tersedia dari Chrome 120 hingga Chrome 125 (atau setelah 6 Agustus 2024 di versi mana pun).
Cakupan
Hanya DOM Storage (penyimpanan sesi dan lokal), DB Terindeks, dan Web Locks yang tersedia di Chrome 120.
Penyimpanan Cache, Sistem File Pribadi Origin, Kuota, Penyimpanan Blob, dan Saluran Siaran telah ditambahkan di Chrome 121.
Pekerja Bersama dan kontrol atas penyertaan cookie ditambahkan di Chrome 123.
Dedicated Workers mewarisi akses ke cookie yang tidak dipartisi jika requestStorageAccess
dipanggil sebelum pekerja dibuat mulai Chrome 120 (ini tidak memerlukan penggunaan handle Storage Access API).
Berpartisipasi
- Menilai cara Anda menggunakan penyimpanan cookie dan non-cookie dalam konteks pihak ketiga. Contoh kasus penggunaan dapat membantu Anda memahami apakah proposal ini sesuai dengan kebutuhan Anda.
- Luncurkan Chrome versi 120 (atau yang lebih baru) dan pastikan tanda test-third-party-cookie-phaseout diaktifkan.
- Jika ingin menguji fitur secara lokal tanpa menyiapkan token uji coba origin terlebih dahulu, Anda dapat mengaktifkan #enable-experimental-web-platform-features di browser.
- Setelah selesai menguji secara lokal, Anda dapat register ke uji coba origin StorageAccessAPIBeyondCookies dan mendapatkan token untuk domain Anda. Untuk petunjuk yang lebih mendetail, buka Memulai uji coba origin. Panduan untuk memecahkan masalah uji coba origin Chrome memberikan checklist lengkap untuk memastikan token Anda dikonfigurasi dengan benar.
- Sematkan token uji coba origin tersebut dalam iframe yang Anda perlukan untuk menggunakan handle Storage Access API di dalamnya, menggunakan header HTTP, tag meta HTML, atau terprogram. Perhatikan bahwa token harus disematkan oleh frame yang ingin menggunakan API ini. Menyematkannya di frame induk tidak akan mengaktifkan API di frame turunan.
- Panggil
document.requestStorageAccess(...)
untuk mendapatkan nama sebutan Storage Access API di iframe lintas situs. Lihat dokumentasi Storage Access API untuk mengetahui persyaratan agar panggilan ini berhasil. - Migrasikan penyimpanan terkait di iframe Anda untuk menggunakan nama sebutan Storage Access API jika tersedia. Misalnya, panggilan ke
window.sessionStorage.setItem(...)
menjadihandle.sessionStorage.setItem(...)
. - Buka situs Anda dan pastikan bahwa handle akses penyimpanan berfungsi seperti yang diharapkan.
- Untuk berhenti berpartisipasi dalam uji coba origin, hapus token yang Anda tambahkan di langkah 3.
- Kirim masukan atau sampaikan masalah yang Anda temukan ke repositori GitHub Non-Cookie Storage Storage Access API.
Demo: menggunakan Storage Access API untuk mengakses Penyimpanan Lokal yang tidak dipartisi
Demo berikut menunjukkan cara mengakses Saluran Siaran yang tidak dipartisi dari iframe pihak ketiga menggunakan Storage Access API:
https://saa-beyond-cookies.glitch.me/
Demo ini memerlukan Chrome 121 atau yang lebih baru dengan tanda test-third-party-cookie-phaseout diaktifkan.