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
Lepaskan: 2024-12-28 14:03:10
asal
170 orang telah melayarinya

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.
Salin selepas log masuk

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
  }
});
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan