2010-03-03 8 views
4

J'ai une page thusly:Comment accéder au contenu d'un iframe externe via le DOM/Javascript?

<html> 
    <head></head> 
    <body> 
     <iframe src="local.html"></iframe> 
     <iframe src="http://www.google.com"></iframe> 
    </body> 
</html> 

Je l'ai utilisé le DOM pour accéder à la première iframe comme un test (node.documentWindow) mais lorsque je tente similaire sur le iframe externe Firebug signale que l'accès est refusé.

Je suppose que c'est pour la protection XSS, mais existe-t-il un moyen "sûr" d'importer le noeud pour que je puisse récupérer un élément de cette page externe? Existe-t-il un moyen d'explorer le "document tel que rendu" ou quelque chose?

Merci!

Répondre

13

Non. La sécurité inter-domaines empêche cela. La seule façon de contourner est si la page environnante, et l'iframe, sont sur des sous-domaines différents sur le même domaine. Dans ce cas, vous pouvez utiliser document.domain.

C'est à peu près une donnée. Imaginez les implications de sécurité si ce n'était pas le cas. Vous pouvez créer un iframe contenant la page de banque à domicile d'un utilisateur et saisir son mot de passe à l'aide du keydown, par exemple. Il y a des tonnes de possibilités d'abus.

+0

Compris. C'est un peu ce que je pensais, merci pour la confirmation. –

+1

Pas de problème. Je pense que la seule chose que vous pouvez faire est d'avoir un simple script de proxy PHP local chercher la ressource en utilisant 'file_get_contents()' et le passer. Vous pourriez obtenir un DOM fonctionnant mais les références externes (CSS, images etc.) seront brisées si elles étaient relatives à l'emplacement de la page. –