Isolasi lintas asal memungkinkan halaman web menggunakan fitur canggih seperti SharedArrayBuffer. Artikel ini menjelaskan cara mengaktifkan isolasi lintas asal di situs Anda.
Panduan ini menunjukkan cara mengaktifkan isolasi lintas asal. Isolasi lintas asal diperlukan jika Anda ingin menggunakan
SharedArrayBuffer,
performance.measureUserAgentSpecificMemory(),
atau timer resolusi tinggi dengan presisi yang lebih baik.
Jika Anda ingin mengaktifkan isolasi lintas asal, evaluasi dampaknya terhadap resource lintas asal lainnya di situs Anda, seperti penempatan iklan.
Menentukan tempat penggunaan SharedArrayBuffer di situs Anda
Mulai Chrome 92, fungsi yang menggunakan SharedArrayBuffer
tidak akan berfungsi lagi tanpa isolasi lintas asal. Jika Anda membuka halaman ini
karena pesan penghentian SharedArrayBuffer, kemungkinan
situs Anda atau salah satu resource yang disematkan di dalamnya menggunakan SharedArrayBuffer.
Untuk memastikan tidak ada yang rusak di situs Anda karena penghentian, mulailah dengan
mengidentifikasi tempat penggunaannya.
Jika Anda tidak yakin di mana SharedArrayBuffer digunakan di situs Anda, ada dua cara untuk mengetahuinya:
- Menggunakan Chrome DevTools
- (Lanjutan) Menggunakan Pelaporan Penghentian
Jika Anda sudah tahu tempat penggunaan SharedArrayBuffer, lanjutkan ke Menganalisis dampak isolasi lintas asal.
Menggunakan Chrome DevTools
Chrome DevTools memungkinkan developer memeriksa situs.
- Buka Chrome
DevTools di halaman yang Anda curigai mungkin menggunakan
SharedArrayBuffer. - Pilih panel Konsol.
- Jika halaman menggunakan
SharedArrayBuffer, pesan berikut akan muncul:[Deprecation] SharedArrayBuffer will require cross-origin isolation as of M92, around May 2021. See for more details. common-bundle.js:535
- Nama file dan nomor baris di akhir pesan (misalnya,
common-bundle.js:535) menunjukkan asalSharedArrayBuffer. Jika ini adalah library pihak ketiga, hubungi developer untuk memperbaiki masalah ini. Jika diimplementasikan sebagai bagian dari situs Anda, ikuti panduan di bawah untuk mengaktifkan isolasi lintas asal.
(Lanjutan) Menggunakan Pelaporan Penghentian
Beberapa browser memiliki fungsi pelaporan penghentian API ke endpoint tertentu.
- Siapkan server laporan penghentian dan dapatkan URL pelaporan. Anda dapat melakukannya dengan menggunakan layanan publik atau membuat layanan sendiri.
- Dengan menggunakan URL, tetapkan header HTTP berikut ke halaman yang berpotensi
menayangkan
SharedArrayBuffer.Report-To: {"group":"default","max_age":86400,"endpoints":[{"url":"THE_DEPRECATION_ENDPOINT_URL"}]} - Setelah header mulai disebarkan, endpoint yang Anda daftarkan akan mulai mengumpulkan laporan penghentian.
Lihat contoh penerapan.
Menganalisis dampak isolasi lintas asal
Bukankah akan lebih baik jika Anda dapat menilai dampak pengaktifan isolasi lintas asal terhadap situs Anda tanpa benar-benar merusak apa pun? Header HTTP
Cross-Origin-Opener-Policy-Report-Only dan
Cross-Origin-Embedder-Policy-Report-Only
memungkinkan Anda melakukan hal tersebut.
- Tetapkan
Cross-Origin-Opener-Policy-Report-Only: same-originpada dokumen tingkat atas Anda. Seperti namanya, header ini hanya mengirimkan laporan tentang dampak yang akan ditimbulkan olehCOOP: same-originpada situs Anda—header ini tidak akan benar-benar menonaktifkan komunikasi dengan jendela pop-up. - Siapkan pelaporan dan konfigurasi server web untuk menerima dan menyimpan laporan.
- Tetapkan
Cross-Origin-Embedder-Policy-Report-Only: require-corppada dokumen tingkat atas Anda. Sekali lagi, header ini memungkinkan Anda melihat dampak pengaktifanCOEP: require-corptanpa benar-benar memengaruhi fungsi situs Anda. Anda dapat mengonfigurasi header ini untuk mengirim laporan ke server pelaporan yang sama yang Anda siapkan pada langkah sebelumnya.
Mengurangi dampak isolasi lintas asal
Setelah Anda menentukan resource mana yang akan terpengaruh oleh isolasi lintas origin, berikut adalah panduan umum tentang cara memilih ikut serta resource lintas origin tersebut:
- Pada resource lintas origin seperti gambar, skrip, stylesheet, iframe, dan lainnya, tetapkan
Cross-Origin-Resource-Policy:cross-originheader. Pada resource situs yang sama, tetapkanCross-Origin-Resource-Policy:same-siteheader. - Untuk resource yang dapat dimuat menggunakan CORS, pastikan resource tersebut diaktifkan, dengan menetapkan atribut
crossorigindi tag HTML-nya (misalnya,<img src="example.jpg" crossorigin>). Untuk permintaan pengambilan JavaScript, pastikanrequest.modeditetapkan kecors. - Jika Anda ingin menggunakan fitur canggih seperti
SharedArrayBufferdi dalam iframe yang dimuat, tambahkanallow="cross-origin-isolated"ke<iframe>. - Jika resource lintas origin yang dimuat ke dalam iframe atau skrip pekerja melibatkan lapisan iframe atau skrip pekerja lain, terapkan langkah-langkah yang dijelaskan di bagian ini secara rekursif sebelum melanjutkan.
- Setelah Anda mengonfirmasi bahwa semua resource lintas origin telah ikut serta, tetapkan header
Cross-Origin-Embedder-Policy: require-corppada iframe dan skrip worker (Hal ini diperlukan terlepas dari origin yang sama atau lintas origin). - Pastikan tidak ada jendela pop-up lintas asal yang memerlukan komunikasi melalui
postMessage(). Tidak ada cara untuk membuatnya tetap berfungsi saat isolasi lintas asal diaktifkan. Anda dapat memindahkan komunikasi ke dokumen lain yang tidak diisolasi lintas origin, atau menggunakan metode komunikasi lain (misalnya, permintaan HTTP).
Mengaktifkan isolasi lintas asal
Setelah Anda mengurangi dampak isolasi lintas asal, berikut adalah panduan umum untuk mengaktifkan isolasi lintas asal:
- Tetapkan header
Cross-Origin-Opener-Policy: same-originpada dokumen tingkat atas Anda. Jika Anda telah menetapkanCross-Origin-Opener-Policy-Report-Only: same-origin, ganti. Tindakan ini akan memblokir komunikasi antara dokumen tingkat atas Anda dan jendela pop-up-nya. - Tetapkan header
Cross-Origin-Embedder-Policy: require-corppada dokumen tingkat atas Anda. Jika Anda telah menetapkanCross-Origin-Embedder-Policy-Report-Only: require-corp, ganti. Tindakan ini akan memblokir pemuatan resource lintas origin yang tidak dipilih. - Periksa apakah
self.crossOriginIsolatedmenampilkantruedi konsol untuk memverifikasi bahwa halaman Anda diisolasi lintas origin.