Lors de la tentative d'accès aux éléments d'un
SecurityError: Blocked a frame with origin "http://www.example.com" from accessing a cross-origin frame.
Cette erreur est le résultat de la politique de même origine, une mesure de sécurité fondamentale appliquée par les navigateurs.
La politique de même origine empêche les scripts d'accéder aux ressources (comme d’autres pages ou cadres) avec une origine différente. Une origine est définie par le protocole (par exemple HTTP), le nom d'hôte et le port de l'URL. Toute différence entre l'un de ces composants constitue une origine distincte.
Par exemple, un script de "http://www.example.com" ne peut pas accéder aux ressources de "https://www.example.com". , "http://www.anothersite.com" ou "http://www.example.com:81".
Bien que l'accès direct des scripts aux cadres d'origine croisée soit bloqué, il existe une solution de contournement utilisant window.postMessage et les écouteurs d'événements. Cette approche permet d'échanger des données entre la page principale et le frame :
Page principale :
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 } });
N'oubliez pas que la politique de même origine est cruciale pour la sécurité. La désactivation dans votre navigateur pour un site spécifique ou globalement ne doit être effectuée qu'à des fins de développement et avec une extrême prudence.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!