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 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 sementara membatalkan partisi (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 penggunaan ini akan berakhir dengan rilis Chrome 127 pada 3 September 2024. Perhatikan bahwa ini berbeda dengan 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 yang diusulkan Storage Access API (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 di 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} hanya untuk mendapatkan akses ke Penyimpanan Sesi, atau {indexedDB: true, locks:true} untuk memperoleh 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 permintaan 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 Penyimpanan DOM (sesi dan penyimpanan lokal), Indexed DB, dan Web Lock 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 telah ditambahkan di Chrome 123.

Pekerja Khusus mewarisi akses ke cookie yang tidak dipartisi jika requestStorageAccess dipanggil sebelum pekerja dibuat mulai Chrome 120 (tidak perlu menggunakan handle Storage Access API).

Berpartisipasi

  1. 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.
  2. Luncurkan Chrome versi 120 (atau yang lebih baru) dan pastikan tanda test-third-party-cookie-phaseout diaktifkan.
  3. Jika Anda 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 menguji secara lokal, Anda dapat mendaftar 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 menyediakan checklist lengkap untuk memastikan token Anda dikonfigurasi dengan benar.
    2. 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 setiap frame yang ingin menggunakan API ini. Jika ingin menggunakan API ini, menyematkannya ke frame induk tidak akan mengaktifkan API dalam frame turunan.
  4. Panggil document.requestStorageAccess(...) untuk mendapatkan handle Storage Access API di iframe lintas situs. Lihat dokumentasi Storage Access API untuk mengetahui persyaratan agar panggilan ini berhasil.
  5. Migrasikan penyimpanan yang terkait di iframe Anda untuk menggunakan handle Storage Access API jika tersedia. Misalnya, panggilan ke window.sessionStorage.setItem(...) menjadi handle.sessionStorage.setItem(...).
  6. Buka situs Anda dan pastikan handle akses penyimpanan berfungsi sebagaimana mestinya.
  7. Untuk berhenti berpartisipasi dalam uji coba origin, hapus token yang Anda tambahkan di langkah 3.
  8. 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.

Referensi lainnya