Panduan untuk mengaktifkan isolasi lintas asal

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.

  1. Buka Chrome DevTools di halaman yang Anda curigai mungkin menggunakan SharedArrayBuffer.
  2. Pilih panel Konsol.
  3. 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
  4. Nama file dan nomor baris di akhir pesan (misalnya, common-bundle.js:535) menunjukkan asal SharedArrayBuffer. 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.
Peringatan Konsol DevTools saat SharedArrayBuffer digunakan tanpa isolasi lintas asal.
Peringatan Konsol DevTools saat SharedArrayBuffer digunakan tanpa isolasi lintas asal.

(Lanjutan) Menggunakan Pelaporan Penghentian

Beberapa browser memiliki fungsi pelaporan penghentian API ke endpoint tertentu.

  1. Siapkan server laporan penghentian dan dapatkan URL pelaporan. Anda dapat melakukannya dengan menggunakan layanan publik atau membuat layanan sendiri.
  2. 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"}]}
  3. 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.

  1. Tetapkan Cross-Origin-Opener-Policy-Report-Only: same-origin pada dokumen tingkat atas Anda. Seperti namanya, header ini hanya mengirimkan laporan tentang dampak yang akan ditimbulkan oleh COOP: same-origin pada situs Anda—header ini tidak akan benar-benar menonaktifkan komunikasi dengan jendela pop-up.
  2. Siapkan pelaporan dan konfigurasi server web untuk menerima dan menyimpan laporan.
  3. Tetapkan Cross-Origin-Embedder-Policy-Report-Only: require-corp pada dokumen tingkat atas Anda. Sekali lagi, header ini memungkinkan Anda melihat dampak pengaktifan COEP: require-corp tanpa 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:

  1. Pada resource lintas origin seperti gambar, skrip, stylesheet, iframe, dan lainnya, tetapkan Cross-Origin-Resource-Policy:cross-origin header. Pada resource situs yang sama, tetapkan Cross-Origin-Resource-Policy:same-site header.
  2. Untuk resource yang dapat dimuat menggunakan CORS, pastikan resource tersebut diaktifkan, dengan menetapkan atribut crossorigin di tag HTML-nya (misalnya, <img src="example.jpg" crossorigin>). Untuk permintaan pengambilan JavaScript, pastikan request.mode ditetapkan ke cors.
  3. Jika Anda ingin menggunakan fitur canggih seperti SharedArrayBuffer di dalam iframe yang dimuat, tambahkan allow="cross-origin-isolated" ke <iframe>.
  4. 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.
  5. Setelah Anda mengonfirmasi bahwa semua resource lintas origin telah ikut serta, tetapkan header Cross-Origin-Embedder-Policy: require-corp pada iframe dan skrip worker (Hal ini diperlukan terlepas dari origin yang sama atau lintas origin).
  6. 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:

  1. Tetapkan header Cross-Origin-Opener-Policy: same-origin pada dokumen tingkat atas Anda. Jika Anda telah menetapkan Cross-Origin-Opener-Policy-Report-Only: same-origin, ganti. Tindakan ini akan memblokir komunikasi antara dokumen tingkat atas Anda dan jendela pop-up-nya.
  2. Tetapkan header Cross-Origin-Embedder-Policy: require-corp pada dokumen tingkat atas Anda. Jika Anda telah menetapkan Cross-Origin-Embedder-Policy-Report-Only: require-corp, ganti. Tindakan ini akan memblokir pemuatan resource lintas origin yang tidak dipilih.
  3. Periksa apakah self.crossOriginIsolated menampilkan true di konsol untuk memverifikasi bahwa halaman Anda diisolasi lintas origin.

Resource