2017-10-18 2 views
1

Une chose curieuse est arrivée aujourd'hui tester un site web que je développe: J'essayais d'avoir accès à des éléments à l'intérieur d'un iframe avec jquery, et à ma grande surprise pour y accéder et les modifier. La surprise est que l'iframe n'est pas sur le même domaine, donc je n'étais pas supposé pouvoir le faire pour "la même politique d'origine" (ou je me trompe?). Cela ne peut être fait qu'après avoir "inspecté" l'élément iframe avec le navigateur (chrome dans ce cas). Si plus tard j'inspecte tout élément du site qui n'est pas dans l'iframe, alors je perds cette superpuissance et j'obtiens le résultat attendu, c'est-à-dire que jquery n'est pas autorisé à accéder à cause de la même politique d'origine.Accéder au contenu iframe avec jquery après l'avoir inspecté avec le navigateur

Les questions: 1.- Est-ce censé se produire? 2.- Y a-t-il un moyen de l'empêcher si cela peut impliquer des risques de sécurité? Si ce 3.- est supposé arriver et est sûr, comment puis-je JQuery « simuler » le navigateur « inspection » pour que je puisse avoir accès à des éléments iframes et les modifier

+0

Étiez-vous le jquery dans la console? –

+0

Oui, le test décrit provient de la console de chrome – Roberto

+1

Dans la console, vous pouvez sélectionner le niveau d'image dans lequel vous souhaitez exécuter votre javascript. Vous pouvez donc exécuter jQuery dans n'importe quel cadre de la page, quelle que soit l'origine. Si vous êtes sûr que vous avez exécuté le javascript dans le cadre * top * et que vous avez accédé à un iframe d'origine différent, alors ce serait inattendu (je devrais essayer de le reproduire moi-même pour rassembler plus d'informations). –

Répondre

0

Lorsque vous inspectez un iframe (testé Chrome), il définit automatiquement le contexte de la console comme étant celui de l'iframe. Ainsi, vous pouvez exécuter n'importe quel javascript directement sur le contenu de l'iframe. Mais il ne serait pas capable d'y accéder depuis le niveau parent (où l'iframe était instancié), car de telles actions pourraient être considérées comme un défaut de sécurité.

Voici un exemple lorsque vous essayez d'accéder au contexte parent (dans ce cas, le parent est le iframe jsFiddle yo ucan voir en haut à gauche): Accessing from parent context

Et puis quand je passe le contexte de la iframe j'essayais d'accéder: Accessing from the iframe's context

J'espère que ceci résume la réponse et peut aider quelqu'un d'autre qui pourrait avoir une question similaire.

+0

Merci beaucoup Alex pour votre patience et votre temps. Pour paraphraser votre texte en réponse à mes questions: – Roberto

+1

Merci beaucoup Alex pour votre patience et votre temps. Pour paraphraser votre texte comme réponses à mes questions: Réponse 1.- Oui, c'est supposé arriver mais seulement dans la console du navigateur, pas pour js ou jquery codé. Réponse 2.- Il n'est pas nécessaire de l'empêcher car cela ne peut se faire que manuellement depuis la console d'un navigateur (c'est sûr). 3.- Vous ne pouvez pas "simuler" le navigateur "inspecter" pour avoir accès aux éléments iframes et les modifier. – Roberto