Isolasi lintas asal memungkinkan halaman web menggunakan fitur canggih seperti SharedArrayBuffer. Artikel ini menjelaskan cara mengaktifkan isolasi lintas origin di situs Anda.
Panduan ini menunjukkan cara mengaktifkan isolasi lintas-asal. Isolasi lintas origin
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 dampak yang akan ditimbulkan pada resource lintas-asal lainnya di situs Anda, seperti penempatan iklan.
SharedArrayBuffer
di situs AndaSharedArrayBuffer
tidak akan lagi
berfungsi tanpa isolasi lintas asal. Jika Anda membuka halaman ini karena
pesan penghentian penggunaan 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 penggunaan, mulailah dengan mengidentifikasi tempatnya digunakan.Jika Anda tidak yakin di bagian mana situs Anda SharedArrayBuffer
digunakan, ada
dua cara untuk mengetahuinya:
- Menggunakan Chrome DevTools
- (Lanjutan) Menggunakan Pelaporan Penghentian
Jika Anda sudah mengetahui tempat Anda menggunakan 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 https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. common-bundle.js:535
- Nama file dan nomor baris di akhir pesan (misalnya,
common-bundle.js:535
) menunjukkan asalSharedArrayBuffer
. Jika library tersebut adalah library pihak ketiga, hubungi developer untuk memperbaiki masalahnya. Jika diterapkan sebagai bagian dari situs Anda, ikuti panduan di bawah untuk mengaktifkan isolasi lintas origin.
(Lanjutan) Menggunakan Pelaporan Penghentian
Beberapa browser memiliki fungsi pelaporan penghentian API ke endpoint yang ditentukan.
- Siapkan server laporan penghentian penggunaan dan dapatkan URL pelaporan. Anda dapat melakukannya dengan menggunakan layanan publik atau membuat 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 diterapkan, endpoint tempat Anda mendaftar akan mulai mengumpulkan laporan penghentian penggunaan.
Lihat contoh penerapan di sini: https://cross-origin-isolation.glitch.me.
Menganalisis dampak isolasi lintas origin
Bukankah akan lebih baik jika Anda dapat menilai dampak pengaktifan isolasi lintas origin
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 melakukannya.
- Tetapkan
Cross-Origin-Opener-Policy-Report-Only: same-origin
di dokumen tingkat teratas. Seperti namanya, header ini hanya mengirim laporan tentang dampak yang akan ditimbulkanCOOP: same-origin
terhadap situs Anda—header ini tidak akan menonaktifkan komunikasi dengan jendela pop-up. - Siapkan pelaporan dan konfigurasikan server web untuk menerima dan menyimpan laporan.
- Tetapkan
Cross-Origin-Embedder-Policy-Report-Only: require-corp
di dokumen tingkat teratas. Sekali lagi, header ini memungkinkan Anda melihat dampak pengaktifanCOEP: require-corp
tanpa benar-benar memengaruhi fungsi situs Anda. Anda dapat mengonfigurasi header ini untuk mengirim laporan ke server pelaporan yang sama dengan yang Anda siapkan di langkah sebelumnya.
Mitigasi dampak isolasi lintas-asal
Setelah Anda menentukan resource mana yang akan terpengaruh oleh isolasi lintas origin, berikut adalah panduan umum tentang cara Anda benar-benar memilih untuk mengaktifkan resource lintas origin tersebut:
- Pada resource lintas-asal seperti gambar, skrip, stylesheet, iframe, dan
lainnya, tetapkan header
Cross-Origin-Resource-Policy: cross-origin
. Pada resource situs yang sama, tetapkan headerCross-Origin-Resource-Policy: same-site
. - Untuk resource yang dapat dimuat menggunakan CORS, pastikan
resource tersebut diaktifkan, dengan menetapkan atribut
crossorigin
dalam tag HTML-nya (misalnya,<img src="example.jpg" crossorigin>
). Untuk permintaan pengambilan JavaScript, pastikanrequest.mode
ditetapkan kecors
. - Jika Anda ingin menggunakan fitur canggih seperti
SharedArrayBuffer
di dalam iframe yang dimuat, tambahkanallow="cross-origin-isolated"
ke<iframe>
. - Jika resource lintas-asal yang dimuat ke dalam iframe atau skrip pekerja melibatkan lapisan iframe atau skrip pekerja lain, terapkan secara berulang langkah-langkah yang dijelaskan di bagian ini sebelum melanjutkan.
- Setelah Anda mengonfirmasi bahwa semua resource lintas-asal diikutsertakan, tetapkan header
Cross-Origin-Embedder-Policy: require-corp
pada skrip iframe dan pekerja (Hal ini diperlukan terlepas dari asal yang sama atau lintas-asal). - Pastikan tidak ada jendela pop-up lintas origin 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 yang berbeda (misalnya, permintaan HTTP).
Mengaktifkan isolasi lintas origin
Setelah Anda memitigasi dampaknya dengan isolasi lintas origin, berikut adalah panduan umum untuk mengaktifkan isolasi lintas origin:
- Tetapkan header
Cross-Origin-Opener-Policy: same-origin
pada dokumen tingkat teratas. Jika Anda telah menetapkanCross-Origin-Opener-Policy-Report-Only: same-origin
, ganti. Tindakan ini akan memblokir komunikasi antara dokumen tingkat atas dan jendela pop-up-nya. - Tetapkan header
Cross-Origin-Embedder-Policy: require-corp
pada dokumen tingkat teratas. Jika Anda telah menetapkanCross-Origin-Embedder-Policy-Report-Only: require-corp
, ganti. Tindakan ini akan memblokir pemuatan resource lintas origin yang tidak diikutsertakan. - Pastikan
self.crossOriginIsolated
menampilkantrue
di konsol untuk memverifikasi bahwa halaman Anda terisolasi lintas origin.