Maison > interface Web > js tutoriel > Comment surmonter « SecurityError : accès cross-origine bloqué » lors de l'utilisation d'Iframes ?

Comment surmonter « SecurityError : accès cross-origine bloqué » lors de l'utilisation d'Iframes ?

Barbara Streisand
Libérer: 2025-01-01 03:33:09
original
743 Les gens l'ont consulté

How to Overcome

Erreur de sécurité : accès cross-origine bloqué

Lorsque vous tentez d'intégrer une iframe dans votre page HTML et d'accéder à ses éléments à l'aide de JavaScript, vous pouvez rencontrer l'erreur suivante :

SecurityError: Blocked a frame with origin "http://www.example.com" from accessing a cross-origin frame.
Copier après la connexion

Cette erreur provient de l'adhésion du navigateur à la politique de même origine, une mesure de sécurité qui empêche les scripts d'accéder aux frames avec origines différentes. Une origine englobe le protocole, le nom d'hôte et le port.

Solution de contournement

Bien que l'accès direct aux scripts d'origine croisée soit interdit, vous pouvez utiliser window.postMessage et son événement de message correspondant pour établir une communication entre le cadres :

Principal Page :

const frame = document.getElementById('your-frame-id');
frame.contentWindow.postMessage(/*any variable or object here*/, 'https://your-second-site.example');
Copier après la connexion

Iframe :

window.addEventListener('message', event => {
    // Verify the origin to ensure it's your site
    if (event.origin === 'https://your-first-site.example') {
        // Retrieve data from event.data
        console.log(event.data);
    }
});
Copier après la connexion

Cette approche permet une communication bidirectionnelle entre les frames. La transmission de messages d'origine croisée peut également être appliquée aux pop-ups et autres nouvelles fenêtres générées à partir de la page principale.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal