2012-04-09 4 views
0

Ich versuche, die Quelle eines iframe auf eine leere HTML-Seite anzugeben. Da sich die Quelle in einer anderen Domäne befindet, erhalte ich den Fehler "Berechtigung verweigert". Gibt es eine Möglichkeit für mich, die HTML-Quelle in den Iframe zu injizieren, um das Cross-Site-Problem zu vermeiden?Inject-HTML-Quelle in einen iframe, um Cross-Site-Scripting-Problem zu vermeiden

+3

Ich denke, dies fällt unter Cross-Site-Scripting, also ist dies nicht möglich. Wenn Sie die Kontrolle über die im Iframe geladene Seite haben, können Sie vielleicht [window.postMessage] (https://developer.mozilla.org/en/DOM/window.postMessage) verwenden. Darf ich fragen, was dein Endziel ist? Vielleicht gibt es eine andere Art zu tun, was immer du willst. – wzub

Antwort

0

ein Iframe zu einer anderen Domäne ist in der Regel kein Problem, Sie können verhindern, dass andere Ihre Website in einem iframe anzeigen, indem Sie die HTTP-Header der X-Frame-Optionen festlegen. (Und ich nehme an, Sie haben sich nicht die Mühe gemacht, den HTTP Response Header zu überprüfen ...).

Wenn Sie nur eine leere Seite benötigen, öffnen Sie den Iframe für eine von Ihnen kontrollierte Seite. wie blank.html in Ihrem Dokumentstammverzeichnis.

+0

Danke, wir haben gerade eine Dummy-Seite auf der gleichen Domain erstellt. – mpusarla

0

Wie Rook sagte, gibt es normalerweise kein Problem mit dem Zeigen eines Iframe Cross-Site. In der Tat ist der Iframe eine der bekannten Möglichkeiten, um eine gewisse Ebene der Cross-Site-Kommunikation zu umgehen. Darüber hinaus wird dieser Mechanismus in der Werbung verwendet, um Inhalte auf verschiedenen Websites dynamisch an Nutzer zu übermitteln.

Wie auch immer, eine andere Möglichkeit, die Sie erreichen können, ist einen Proxy-Service zu erstellen. Auf Ihrem lokalen Server können Sie ein Skript schreiben, das eine GET-Anfrage für die Seite ausführt und dann den HTML-Code als eigene Antwort ausspuckt. Auf diese Weise kann die Quelle Ihres iframes auf Ihren lokalen Server verweisen.

+0

Danke für die Antworten. Ich werde versuchen, das Problem genauer zu erläutern. Wir versuchen, den JavaScript-Code in einer Webanwendung zu trennen, indem wir sie zu generischen Widgets machen. Um den Widgets Flexibilität zu geben, um von anderen Anwendungen wiederverwendet zu werden, können wir den Proxy-Ansatz nicht verwenden. Das würde erfordern, dass alle Benutzer des Widgets den Proxy einrichten. Wir müssen das ganze Javascript unter einer Domäne haben. Da die Webseite in einer anderen Domäne gerendert wird, verursacht das Festlegen der iframe-Quelle im Widget auf eine HTML-Seite in der JavaScript-Domäne Probleme. – mpusarla