Berpartisipasi dalam uji coba origin untuk akses penyimpanan non-cookie melalui Storage Access API

Helen Cho
Helen Cho
Ari Chivukula
Ari Chivukula

Chrome 115 memperkenalkan perubahan pada API penyimpanan, pekerja layanan, dan komunikasi dengan membuat partisi 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 (dikirim mulai Chrome 117), yang sudah mengizinkan pihak ketiga untuk 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 bagaimana solusi yang diusulkan menangani kasus penggunaan mereka guna 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 hanya menginginkan akses API tertentu, bukan akses ke all, Anda dapat meneruskan nama handle API yang diperlukan. 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 cocok dengan persyaratan saat ini untuk akses cookie melalui Storage Access API. Misalnya, di Chrome, tidak ada perintah yang ditampilkan jika origin berada dalam Set Situs Terkait (RWS, nama baru untuk Set Pihak Pertama) yang sama. 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 setiap tonggak pencapaian).

Cakupan

Hanya Penyimpanan DOM (sesi dan penyimpanan lokal), DB Terindeks, dan Kunci Web yang tersedia di Chrome 120.

Cache Storage, Origin Private File System, Quota, Blob Storage, dan Broadcast Channel ditambahkan di Chrome 121.

Pekerja Bersama dan kontrol atas penyertaan cookie ditambahkan di Chrome 123.

Pekerja Khusus mewarisi akses ke cookie yang tidak dipartisi jika requestStorageAccess dipanggil sebelum pekerja dibuat mulai Chrome 120 (ini tidak memerlukan penggunaan nama sebutan Storage Access API).

Berpartisipasi

  1. Evaluasi 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.
  2. Luncurkan Chrome versi 120 (atau yang lebih baru) dan pastikan tanda test-third-party-cookie-phaseout diaktifkan.
  3. Jika ingin menguji fitur secara lokal tanpa menyiapkan token uji coba origin terlebih dahulu, Anda dapat mengaktifkan #enable-experimental-web-platform-features di browser.
    1. Setelah selesai melakukan pengujian secara lokal, Anda dapat mendaftar untuk 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.
    2. Sematkan token uji coba origin tersebut di iframe yang Anda perlukan untuk menggunakan handle Storage Access API, menggunakan header HTTP, tag meta HTML, atau secara terprogram. Perhatikan bahwa token harus disematkan oleh frame yang ingin menggunakan API ini. Menyematkannya di frame induk tidak akan mengaktifkan API di frame turunan.
  4. 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.
  5. Migrasikan penyimpanan terkait di iframe Anda untuk menggunakan nama sebutan Storage Access API jika tersedia. Misalnya, panggilan ke window.sessionStorage.setItem(...) menjadi handle.sessionStorage.setItem(...).
  6. Buka situs Anda dan pastikan bahwa handle akses penyimpanan berfungsi seperti yang diharapkan.
  7. Untuk berhenti berpartisipasi dalam uji coba origin, hapus token yang Anda tambahkan di langkah 3.
  8. Kirim masukan atau laporkan masalah yang Anda alami ke repositori GitHub Storage Non-Cookie 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.

Referensi lainnya