web-dev-qa-db-fra.com

Existe-t-il un moyen de savoir si un chargement de page a été effectué dans un cadre, un iframe, etc.?

Vous vous demandez s’il existe un moyen de détecter le chargement d’une page dans un cadre, une iframe, etc. (probablement via JavaScript) et, dans l’affirmative, quelles sont les limites d’un tel système de détection?

4
blunders
if (top.location.href != window.location.href) {
     alert("In A Frame");
}

La limite est que si JavaScript est désactivé, cela ne fonctionnera pas.

Vous pouvez également utiliser l'en-tête HTTP X-Frame-Options . Cet en-tête indique à un navigateur Web d'autoriser ou non une page Web à être encadrée dans une autre page Web. Ceci inclut les balises <frame> et <iframe>.

Il existe deux valeurs possibles pour cet en-tête:

DENY - Ce paramètre empêche toute page servie d'être placée dans un cadre, même s'il se trouve sur le même site Web que celui d'origine. doit être utilisé si vous ne souhaitez jamais que vos pages soient utilisées à l'intérieur d'un cadre.

SAMEORIGIN - Ce paramètre permet de servir les pages dans le cadre d'une page du même site Web. Si un site externe tente de charger la page dans un cadre, la demande sera refusée.

Cet en-tête fonctionne dans Internet Explorer 8.0, Firefox 3.6.9, Opera 10.50, Safari 4.0 et Chrome 4.1.

6
John Conde