449 votes

Surmonter le problème "Affichage interdit par X-Frame-Options".

Je suis en train d'écrire une toute petite page web dont le but est d'encadrer quelques autres pages, simplement pour les regrouper dans une seule fenêtre de navigateur pour en faciliter l'affichage. Quelques-unes des pages que j'essaie d'encadrer interdisent d'être encadrées et génèrent une erreur "Refused to display document because display forbidden by X-Frame-Options." dans Chrome. Je comprends qu'il s'agit d'une limitation de sécurité (pour une bonne raison), et je n'ai pas accès pour la modifier.

Existe-t-il une autre méthode, avec ou sans encadrement, pour afficher des pages dans une seule fenêtre sans être gêné par l'en-tête X-Frame-Options ?

122 votes

S'il s'agit de vos pages, supprimez le limiteur d'images. Sinon, respectez les souhaits de l'auteur de la page et NE LES CADREZ PAS.

0 votes

Si vous obtenez cette erreur pour une application Facebook et que vous utilisez des appels AJAX, j'ai lu quelque part que Facebook aime vraiment utiliser les balises # pour ses contacts ajax. Essayez de changer les liens, cela a fonctionné pour moi.

0 votes

Assurez-vous d'activer l'API intégrée de google maps en plus de l'API de lieux. Générez votre carte à partir d'ici : developers.google.com/maps/documentation/embed/start

220voto

Sean Points 1398

J'ai rencontré un problème similaire : j'essayais d'afficher le contenu de notre propre site dans un iframe (sous forme de boîte de dialogue de type lightbox avec Colorbox ), et où nous avions un en-tête "X-Frame-Options SAMEORIGIN" sur le serveur source qui empêchait le chargement sur notre serveur de test.

Cela ne semble être documenté nulle part, mais si vous pouvez modifier les pages que vous essayez d'intégrer (par exemple, ce sont vos propres pages), le simple fait d'envoyer un autre en-tête X-Frame-Options avec une chaîne quelconque désactive les commandes SAMEORIGIN ou DENY.

Par exemple, pour PHP, il faut mettre

<?php
    header('X-Frame-Options: GOFORIT'); 
?>

en haut de votre page fera que les navigateurs combineront les deux, ce qui donnera un en-tête de

X-Frame-Options SAMEORIGIN, GOFORIT

...et permet de charger la page dans une iframe. Cela semble fonctionner lorsque la commande SAMEORIGIN initiale a été définie au niveau du serveur et que vous souhaitez la remplacer page par page.

Bonne chance !

3 votes

J'avais un cadre autour d'un site web. Sur mon site web, je redirige vers Instagram pour OAUTH. Puisque Instagram envoie X-Frame-Options: SAMEORIGIN il n'y a aucun moyen de faire cela à l'intérieur du cadre. Vous devez utiliser une fenêtre popup.

17 votes

Avec PHP, il est probablement préférable d'utiliser la nouvelle fonction header_remove pour autant que vous en disposiez (>=5.3.0).

13 votes

Vous pouvez également modifier le fichier .htaccess si vous souhaitez supprimer les options X-Frame-Options d'un répertoire entier. Il suffit d'ajouter la ligne : Header always unset X-Frame-Options

164voto

Wil Points 1507

Si vous obtenez cette erreur pour une vidéo YouTube, plutôt que d'utiliser l'URL complète, utilisez l'URL intégrée dans les options de partage. Cela ressemblera à http://www.youtube.com/embed/eCfDxZxTBW4

Vous pouvez également remplacer watch?v= avec embed/ donc http://www.youtube.com/watch?v=eCfDxZxTBW4 devient http://www.youtube.com/embed/eCfDxZxTBW4

17 votes

Oh progrès... J'aimerais qu'ils nous redirigent simplement vers la page d'intégration au lieu de provoquer une erreur et de me faire réécrire mes scripts !

120voto

Q Studio Points 1259

Si vous obtenez ce message d'erreur lorsque vous essayez d'intégrer une carte Google Map dans une page d'accueil du site Web de l'Office. iframe vous devez ajouter &output=embed vers le lien source.

128 votes

Cela n'est vrai que pour l'intégration de Google Maps dans une iframe, et ne constitue pas une "solution" générale.

18 votes

J'avais besoin d'intégrer une carte google dans une lightbox, cette "solution" était donc parfaite.

5 votes

Si vous essayez de faire cela avec une intention web de Twitter, oubliez-la. J'ai perdu toute une journée à essayer différents plugins lightbox pour découvrir ceci : "Bien que vous puissiez fournir des liens vers des intentions dans des IFRAME et des widgets, les pages résultantes ne peuvent pas être chargées dans un IFRAME". Source : Site web de Twitter.

23voto

Kevin Vella Points 677

Ajout d'un

  target='_top'

à mon lien dans l'onglet facebook a réglé le problème pour moi...

1 votes

J'avais le même problème avec la iframe Paypal contenue dans une autre iframe. Cela fonctionne maintenant ! Merci

4 votes

J'ai également ajouté target='_top', mais le problème avec cette solution est que le lien s'ouvre maintenant en dehors de l'iframe dans un nouvel onglet sans le canevas facebook.

21voto

Eric Corriel Points 346

Si vous obtenez cette erreur en essayant d'intégrer du contenu Vimeo, modifiez le src de l'iframe,

de : https://vimeo.com/63534746
à : http://player.vimeo.com/video/63534746

0 votes

cela a résolu mon problème, merci. que faire avec les vidéos youtube ? ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X