Rumah >hujung hadapan web >tutorial js >Mengapa Kod JavaScript Saya Mendapat Ralat 'SecurityError: Disekat bingkai dengan asal...' Ralat Semasa Mengakses IFrame?

Mengapa Kod JavaScript Saya Mendapat Ralat 'SecurityError: Disekat bingkai dengan asal...' Ralat Semasa Mengakses IFrame?

Susan Sarandon
Susan Sarandonasal
2024-12-28 14:03:10174semak imbas

Why Does My JavaScript Code Get a

Akses Bingkai Silang Asal Tersekat: Memahami SecurityError

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 Sama

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:

  • http://www.example.com/home /index.html boleh mengakses sumber dalam http://www.example.com/home/other.html dan http://www.example.com:80.
  • https://google.com/search?q=james bond tidak boleh mengakses sumber daripada http://www.example.com/home/index.html.

Penyelesaian untuk Mengakses Bingkai Silang Asal

Walaupun akses JavaScript terus ke bingkai silang asal dilarang, terdapat penyelesaian untuk bertukar data:

  • window.postMessage(): Membenarkan mesej terkawal melalui antara dua tetingkap asal yang berbeza.
  • postMessage() pendengar dalam iframe: Mendengar mesej yang dihantar daripada ibu bapa dokumen.
// 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 Sama (Awas)

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:

  • [Google Chrome](https://stackoverflow.com/questions/26982875/how-to-disable-same-origin-policy )
  • [Mozilla Firefox](https://superuser.com/questions/287723/temporarily-disable-same-origin-policy-in-firefox)
  • [Safari](https://apple.stackexchange.com/questions /211467/cara-lumpuhkan-dasar-asal-sama-dalam-safari)

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn