Dalam pembangunan web, apabila cuba mengakses elemen dalam iframe yang mempunyai asal yang berbeza daripada dokumen induk, pembangun mungkin menghadapi perkara berikut ralat:
SecurityError: Blocked a frame with origin "http://www.example.com" from accessing a cross-origin frame.
Ralat ini timbul disebabkan oleh dasar asal yang sama yang dilaksanakan oleh penyemak imbas web.
Dasar asal yang sama mengehadkan skrip daripada mengakses sumber daripada tapak web dengan asal yang berbeza untuk mengelakkan potensi kelemahan keselamatan. Origin merujuk kepada gabungan protokol, nama hos dan port URL.
Pertimbangkan contoh berikut:
Walaupun akses JavaScript terus ke bingkai silang asal dilarang, terdapat penyelesaian untuk bertukar data:
// In the main page: frame.contentWindow.postMessage('message', 'https://your-second-site.example'); // In the iframe: window.addEventListener('message', (event) => { if (event.origin === 'https://your-first-site.example') { console.log(event.data); // Received message } });
Melumpuhkan dasar asal yang sama boleh dilakukan untuk tujuan pembangunan, tetapi tidak boleh digunakan dalam persekitaran pengeluaran kerana ia menimbulkan risiko keselamatan yang ketara. Berikut ialah pautan kepada sumber untuk melumpuhkan dasar dalam pelbagai penyemak imbas:
Atas ialah kandungan terperinci Mengapa Kod JavaScript Saya Mendapat Ralat 'SecurityError: Disekat bingkai dengan asal...' Ralat Semasa Mengakses IFrame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!