iframe « refused to connect » : pourquoi cela arrive et comment le corriger

iframe refused to connect

iframe « refused to connect » : causes et solutions, avec vérificateur | We.Inc

Pourquoi une iframe affiche « refused to connect » : X-Frame-Options ou CSP frame-ancestors sur la page intégrée. Collez ses en-têtes de réponse pour obtenir le verdict, puis copiez la correction côté serveur.

Le cadre gris « refused to connect » signifie que la page dans votre iframe a demandé au navigateur de ne pas être intégrée. Elle le fait avec un en-tête de réponse X-Frame-Options (DENY ou SAMEORIGIN) ou une règle Content-Security-Policy frame-ancestors. Seul le serveur du site intégré peut lever ce blocage. Collez ses en-têtes ci-dessous pour voir quelle règle vous bloque.

Ce que chaque valeur d'en-tête signifie pour votre iframe

Cette erreur n'est pas une panne réseau et votre balise iframe n'a rien d'anormal. Le navigateur a récupéré la page, lu un en-tête qui interdit l'intégration et remplacé le contenu par une erreur. La raison est la protection contre le clickjacking : une page que n'importe qui peut intégrer peut être recouverte de boutons invisibles. La solution dépend du serveur qui a envoyé l'en-tête.

Questions fréquentes

Puis-je contourner « refused to connect » depuis ma propre page ?

Non. La règle est appliquée par le navigateur du visiteur pour le compte du site intégré, et aucun attribut de votre iframe ne peut l'annuler. Les seules options sont de modifier les en-têtes du site intégré, d'utiliser une URL d'intégration fournie par le site, ou de mettre un lien.

Pourquoi mon propre site refuse-t-il de se charger dans sa propre iframe ?

Cherchez X-Frame-Options: DENY, ou frame-ancestors 'none'. Les deux bloquent tous les parents, y compris les pages du même domaine. Passez à SAMEORIGIN ou à frame-ancestors 'self'. N'oubliez pas qu'un autre sous-domaine ou un autre port constitue une autre origine.

Faut-il utiliser X-Frame-Options ou frame-ancestors ?

Utilisez frame-ancestors, car il peut lister plusieurs parents autorisés et l'emporte dès que les deux sont présents. Si vous envoyez aussi X-Frame-Options, gardez-le cohérent avec la règle CSP pour ne pas induire en erreur la prochaine personne qui lira la configuration.

Pourquoi un lien vers une vidéo ou une carte refuse-t-il de se connecter ?

La page de lecture ou de lieu ordinaire envoie généralement un en-tête d'intégration, tandis que le service publie une adresse d'intégration séparée prévue pour les iframes, souvent sous Partager puis Intégrer. Notre générateur de code d'intégration convertit pour vous les liens pris en charge en ces adresses d'intégration.

frame-ancestors vérifie-t-il chaque cadre parent ?

Oui. Si votre iframe se trouve dans une autre iframe, chaque ancêtre jusqu'à la page principale doit respecter la règle, pas seulement le parent direct.

Lisez l'en-tête, pas l'erreur

Corriger sur un serveur que vous contrôlez

Quand ce n'est pas votre site

Corrections serveur à copier

Chaque exemple autorise le même site plus un partenaire. Remplacez https://partner.example par l'origine qui doit pouvoir vous intégrer, ou utilisez 'none' pour bloquer tout le monde.

always conserve aussi l'en-tête sur les pages d'erreur. Supprimez toute ancienne ligne X-Frame-Options pour que les deux règles ne divergent pas.

Apache (.htaccess ou hôte virtuel)

Nécessite mod_headers. Header always set remplace toute valeur antérieure du même en-tête.

Express avec Helmet

Helmet définit X-Frame-Options à SAMEORIGIN par défaut. Le désactiver et définir frame-ancestors garde une seule source de vérité.

Next.js (next.config.js)

headers() ajoute des en-têtes de réponse à chaque route correspondante. Les plateformes d'hébergement peuvent ajouter les leurs, vérifiez donc ensuite la réponse en ligne.

Vérificateur d'en-têtes de réponse

Collez les en-têtes de réponse de la page dans l'iframe. Tout s'exécute dans cette page ; rien n'est récupéré.

En-têtes de réponse de la page intégrée

Origine de la page qui contient l'iframe

Origine de la page intégrée

Rétablir les en-têtes d'exemple

Verdict

Ce parent peut intégrer la page.

Le navigateur refusera d'afficher cette page dans l'iframe.

Pas encore de verdict clair.

Bloqué par Content-Security-Policy: frame-ancestors 'none'.

Autorisé par frame-ancestors : {v} correspond à l'origine parente.

Bloqué par frame-ancestors : aucune source de la liste ne correspond à {v}.

X-Frame-Options est présent mais ignoré, car c'est frame-ancestors qui décide.

Bloqué par X-Frame-Options: DENY.

Autorisé par X-Frame-Options: SAMEORIGIN, et les origines correspondent.

Bloqué par X-Frame-Options: SAMEORIGIN, et {v} est une autre origine.

ALLOW-FROM est obsolète et ignoré, il ne bloque donc pas.

X-Frame-Options a plusieurs valeurs différentes. Envoyez-en exactement une.

Content-Security-Policy-Report-Only ne bloque jamais ; il a été ignoré.

Aucun en-tête d'intégration trouvé, donc n'importe quel site peut intégrer cette page.

Saisissez les deux origines sous forme d'URL complètes, par exemple https://example.com.

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site