Rumah >hujung hadapan web >tutorial js >Mengapa Saya Mendapat 'SecurityError: Akses Bingkai Silang Asal Disekat' dalam JavaScript?
Apabila cuba mengakses elemen dalam
SecurityError: Blocked a frame with origin "http://www.example.com" from accessing a cross-origin frame.
Ralat ini adalah hasil daripada dasar asal yang sama, langkah keselamatan asas yang dikuatkuasakan oleh penyemak imbas.
Dasar asal sama menghalang skrip daripada mengakses sumber (seperti halaman atau bingkai lain) dengan asal yang berbeza. Asal ditakrifkan oleh protokol (cth., HTTP), nama hos dan port URL. Sebarang perbezaan dalam mana-mana komponen ini merupakan asal yang berasingan.
Sebagai contoh, skrip daripada "http://www.example.com" tidak boleh mengakses sumber daripada "https://www.example.com" , "http://www.anothersite.com", atau "http://www.example.com:81".
Walaupun akses skrip terus ke bingkai silang asal disekat, terdapat penyelesaian menggunakan window.postMessage dan pendengar acara. Pendekatan ini membolehkan anda menukar data antara halaman utama dan bingkai:
Halaman Utama:
const frame = document.getElementById('your-frame-id'); frame.contentWindow.postMessage(/*variable or object*/, 'https://your-second-site.example');
window.addEventListener('message', event => { // Check the origin of the data if (event.origin === 'https://your-first-site.example') { // Data is from the main page, use event.data to process it } });
Ingat bahawa dasar asal yang sama adalah penting untuk keselamatan. Melumpuhkannya dalam penyemak imbas anda untuk tapak tertentu atau secara global hanya perlu dilakukan untuk tujuan pembangunan dan dengan sangat berhati-hati.
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'SecurityError: Akses Bingkai Silang Asal Disekat' dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!