it-swarm.com.de

Unsicherer JavaScript-Versuch, auf Frame mit URL zuzugreifen

Ich erhalte die folgende Fehlermeldung, wenn ich versuche, einen Hash-Wert für die übergeordnete URL von iframe festzulegen, die eine andere Domain-URL enthält:

Unsicherer JavaScript-Versuch, über Frame mit URL "URL2" auf Frame mit URL "URL1" zuzugreifen. Domänen, Protokolle und Ports müssen übereinstimmen.

Wie kann ich dieses Problem beheben?

111
Atul

Von einem untergeordneten Dokument anderen Ursprungs aus haben Sie keinen Zugriff auf die Eigenschaft location.hash Des oberen Fensters, Sie können jedoch die Eigenschaft location selbst festlegen.

Dies bedeutet, dass der oberste Windows-Speicherort http://example.com/page/ Ist, anstatt dies zu tun

parent.location.hash = "#foobar";

sie müssen den Standort der Eltern kennen und tun

parent.location = "http://example.com/page/#foobar";

Da die Ressource nicht navigiert wird, funktioniert dies wie erwartet und ändert nur den Hash-Teil der URL.

Wenn Sie dies für die domänenübergreifende Kommunikation verwenden, würde ich empfehlen, stattdessen easyXDM zu verwenden.

123
Sean Kinsey

Crossframe-Scripting ist nicht möglich, wenn die beiden Frames unterschiedliche Domänen haben -> Sicherheit.

Siehe dies: http://javascript.about.com/od/reference/a/frame3.htm

Nun zur Beantwortung Ihrer Frage: Es gibt keine Lösung oder Umgehung, Sie sollten einfach Ihr Website-Design überprüfen, warum es zwei Frames aus verschiedenen Domänen geben muss, die die URL des anderen ändern.

13
EvilMM

Ich habe die gleiche Fehlermeldung erhalten, als ich versucht habe, die Domain für iframe.src zu feilen.

Für mich bestand die Antwort darin, die Datei iframe.src in eine URL in der SAME-Domain zu ändern. Dabei handelte es sich jedoch tatsächlich um eine HTML-Weiterleitungsseite zur gewünschten Domain. Die andere Domain ist dann fehlerfrei in meinem iframe aufgetaucht.

Lief wie am Schnürchen. :)

9
Tommy

Eine Lösung könnte darin bestehen, eine lokale Datei zu verwenden, die den Remote-Inhalt abruft

remoteInclude.php

<?php
$url = $_GET['url'];
$contents = file_get_contents($url);
echo $contents;

Das HTML

<iframe frameborder="1" id="frametest" src="/remoteInclude.php?url=REMOTE_URL_HERE"></iframe>
<script>
    $("#frametest").load(function (){       
    var contents =$("#frametest").contents();
});
6
user1485438

Ich fand heraus, dass die Verwendung der XFBML-Version des Facebook-ähnlichen Buttons anstelle der HTML5-Version dieses Problem behebt. Fügen Sie den folgenden Code hinzu, in dem die Schaltfläche angezeigt werden soll:

<div id="fb-root"></div>
<script>(function (d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<fb:like send="true" layout="button_count" width="50" show_faces="false" font="arial"></fb:like>

Dann fügen Sie dies zu Ihrem HTML-Tag hinzu:

 xmlns:fb="http://ogp.me/ns/fb#"
3
Luke Alderton

Das Problem besteht auch dann, wenn Sie einen Proxy erstellen oder den Inhalt laden und als lokal einfügen. Alle von diesem Inhalt definierten Skripts werden aus der anderen Domäne geladen und verursachen domänenübergreifende Probleme.

1
user2345833