Rumah >hujung hadapan web >tutorial js >Mengapa JavaScript Tidak Boleh Mengakses Iframe Silang Asal, dan Bagaimana Saya Boleh Mengatasinya?

Mengapa JavaScript Tidak Boleh Mengakses Iframe Silang Asal, dan Bagaimana Saya Boleh Mengatasinya?

DDD
DDDasal
2024-12-23 15:55:16471semak imbas

Why Can't JavaScript Access Cross-Origin Iframes, and How Can I Work Around It?

Same-Origin Policy Conundrum: Akses Ditolak untuk Cross-Origin Frames

Apabila cuba mengakses elemen dalam

Apakah Dasar Asal Sama?

Dasar asal yang sama menghalang skrip daripada mengakses kandungan daripada asal yang berbeza. Asal dianggap berbeza jika mana-mana komponen URL berikut berbeza:

  • Protokol (cth., http lwn. https)
  • Nama hos (cth., www.example.com lwn. data. example.com)
  • Port (mis., 80 lwn. 2251)

Sekatan yang Mengecewakan

Dasar ini secara berkesan menghalang skrip anda daripada berinteraksi dengan kandungan daripada tapak web luaran. Sebagai contoh, jika halaman utama anda dimuatkan daripada http://www.example.com dan anda cuba mengakses

Penyelesaian: Komunikasi Rentas Asal

Walaupun anda tidak boleh mengakses terus bingkai silang asal menggunakan JavaScript, anda boleh menggunakan window.postMessage dan acara mesej yang sepadan untuk mewujudkan komunikasi antara halaman. Berikut ialah gambaran ringkas:

  1. Dalam halaman utama: Gunakan postMessage untuk menghantar data ke iframe dengan asal yang sepadan.
  2. Dalam iframe : Dengar acara mesej dan proses data hanya jika asalnya sepadan dengan yang dijangkakan nilai.

Melumpuhkan Dasar Asal Sama (Awas Dinasihatkan)

Adalah mungkin untuk melumpuhkan dasar asal yang sama dalam penyemak imbas tertentu, tetapi ini harus dianggap sebagai risiko keselamatan dan hanya dilakukan untuk tujuan pembangunan. Ingat, melumpuhkan dasar memberikan akses tanpa had kepada sumber silang asal, yang berpotensi mendedahkan penyemak imbas anda kepada kelemahan keselamatan.

Atas ialah kandungan terperinci Mengapa JavaScript Tidak Boleh Mengakses Iframe Silang Asal, dan Bagaimana Saya Boleh Mengatasinya?. 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