Es ist kinderleicht zu erkennen, ob diese Seite innerhalb eines domainübergreifenden Iframes liegt
Antwort auf "Narrensichere Weg, um zu erkennen, ob der iframe cross domain" beschreibt eine Methode, um zu testen, ob ein iframe auf einer Seite Punkte zu einem gleichen-domain-oder cross-domain-Seite, arbeiten rund um die verschiedenen Browser' Interpretationen der cross-domain policy und die Vermeidung von Fehlermeldungen, die zu einer Unterbrechung eines Benutzers oder halt javascript.
Ich bin auf der Suche nach dem äquivalent dieser aber von das Kind Seite innerhalb des iframe testen, ob es innen eine cross-domain-iframe oder nicht.
Ist es möglich, Zugang (gleiche domain) info über die Eltern mit der parent
global z.B. parent.document.location
aber es ist ein zuverlässigen Weg dies zu tun ist cross-browser, ohne abzustürzen in Fehlerwenn es erkennt, dass der andere Elternteil ist cross-domain?
Für die praktische Prüfung, hier ein jsbin innerhalb einer jsfiddle , stürzt in einen Fehler, wenn Sie versuchen zu testen, ob parent.location.host
zugänglich ist. Gibt es einen zuverlässigen Weg, um etwas Verwertbares wie false
sagt uns, dass dies ist ein cross-domain-Eltern, statt einen Fehler?
Gibt es eine try...catch
Variante, die robust cross-browser? Oder vielleicht einige clevere trick mit einem return-Wert von parent.postMessage()
? (obwohl die übergeordnete Seite kann nicht bearbeitet werden)
Use case: stellen Sie sich vor embedable Inhalte eingebettet werden, die auf Seiten auf Ihrer eigenen Website und von Dritten. Wenn die Seite auf der selben domain, iframe, wir verstecken branding und links zurück auf den ursprünglichen Standort, da der Benutzer bereits hier. Wenn Sie den Zugriff auf die Seite von einem 3rd-party-iframe, oder laden Sie die Seite direkt, zeigen wir das branding und die credits, so dass Sie sehen können, die Quelle der Inhalte.
Klären, ich weiß über die gleiche domain policy, und ich don ' T care was die cross-browser-Domäne ist, ich bin gerade auf der Suche, um zu schreiben eine einfache, aber zuverlässige if
Zustand wie if( crossDomainParent() ){ /* do something */}
InformationsquelleAutor der Frage user568458 | 2014-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Prüfen Sie zunächst, ob Sie IFramed.
Wenn Sie IFramed, dann ist Ihr referrer ist Ihre parent-frame-url.
Aus dieser url, die Sie sollten in der Lage sein zu erkennen, wenn Sie wollen, branch code.
InformationsquelleAutor der Antwort palanik
Echte cross-browser-Lösung für die Nachwelt:
Getestet auf eine anständige Schneise der desktop-und mobile Browser.
https://jsfiddle.net/arzd4btc/3/
InformationsquelleAutor der Antwort Jeff Mixon
verwenden Sie x-frame-header, dies zu verhindern, laden Sie Ihre Website, um frame/iframe . es gibt verschiedene Optionen Lesen Sie hier
InformationsquelleAutor der Antwort Pushker Yadav
Mit Ihrem aktuellen Einschränkungen, es gibt keine Möglichkeit, dies zu erreichen, ist die Verwendung des DOM-API. Jede Bewertung mit einem Fenster, zu einer anderen Domäne gehört, wird ausspeien ein Fehler.
Jedoch ein "hack" wäre es, senden Sie eine XHR-von Ihrem Kind-Fenster zum laden einer bekannten Seite in Ihrer Domäne. Wenn das XHR-erfolgreich abgeschlossen ist, dann wissen Sie, dass beide Fenster sind in der gleichen Domäne.
Jedoch, diese protokolliert eine Fehlermeldung an die Konsole.
InformationsquelleAutor der Antwort ncabral
Versuchen, diese (im iframe)
InformationsquelleAutor der Antwort guest271314
Wenn ich sehe Ihren Fall:
Ich würde prüfen, ob es server-Seite (wer den Namen Ihrer Website), mit
$_SERVER['REMOTE_ADDR']
und wenn es das ist Ihre IP, als Sie sich verstecken können, - branding und links Rücken.Wenn der Anwendungsfall ist etwa, um zu verhindern, dass die Gestaltung Ihrer Website, die Sie verwenden können
X-Frame-Options: deny
.Andere Vermutung:
- Elemente in einem Dokument haben einen
ownerDocument
Eigenschaft, vielleicht, die helfen können, erkennen Sie, was Sie wollen.InformationsquelleAutor der Antwort
Habe ich versucht zu verwenden, referer, um festzustellen, cross-domain, aber ich fand es war unzuverlässig, auf vielen Seiten. Vielleicht wird jemand findet das nützlich.
Protokoll, den Hostnamen und den port bestimmen, cross-domain.
InformationsquelleAutor der Antwort N-ate
Verschachtelte iframes : eine rekursive Art und Weise zu wissen, ob iframe (wo dieser code ausgeführt wird) ist cross-domain-oder nicht :
InformationsquelleAutor der Antwort Grégoire Lafortune