Überprüfung, ob eine Website iframe embed erlaubt

8

Ich schreibe ein einfaches Lightbox-ähnliches Plugin für meine App und ich muss einen iframe einbetten, der mit einer beliebigen Seite verknüpft ist. Das Problem ist, viele Websites (zum Beispiel facebook , nytimes und sogar stackoverflow) überprüft, ob ein Frame eingebettet ist. Wenn dies der Fall ist, wird die Seite mit sich selbst als übergeordnete Seite aktualisiert. Dies ist ein bekanntes Problem, und ich denke nicht, dass man etwas dagegen tun kann. Allerdings würde ich gerne vorher wissen ob eine Seite Embed unterstützt oder nicht. Wenn dies nicht der Fall ist, möchte ich die Seite in einem neuen Tab / Fenster öffnen, anstatt einen iframe zu verwenden.

Gibt es einen Trick, mit dem ich das in Javascript überprüfen kann?

Vielleicht gibt es ein serverseitiges Skript, das Links überprüfen kann, um zu sehen, ob sie einen eingebetteten iframe erlauben?

Ich entwickle eine Browser-Erweiterung, also gibt es die Möglichkeit, etwas sehr Kreatives zu machen. Meine Erweiterung wird auf jeder Seite geladen, daher denke ich, dass es einen Weg gibt, einen Parameter in der iframe-URL zu übergeben, der von der Erweiterung aufgenommen werden kann, wenn er den iframe zerstört. Dann kann ich die Domain zu einer Liste von Sites hinzufügen, die iframe nicht einbetten. Dies funktioniert möglicherweise, da Erweiterungen nicht in Iframes geladen werden. Ich werde daran arbeiten, aber in der Zwischenzeit ....

Erläuterung:

Ich bin bereit zu akzeptieren, dass es keine Möglichkeit gibt, den "Frame-Buster" zu "sprengen", d. h. ich weiß, dass ich keine Seite in einem Iframe anzeigen kann, der nicht in einem sein möchte. Aber ich möchte, dass meine App ordnungsgemäß fehlschlägt, was bedeutet, dass der Link in einem neuen Fenster geöffnet wird, wenn iframe embed nicht unterstützt wird. Idealerweise würde ich gerne die iframe-Einbettung zur Laufzeit prüfen (Javascript), aber ich kann eine potentielle serverseitige Lösung mit einem Proxy sehen, wie in den obigen Kommentaren vorgeschlagen. Hoffentlich kann ich eine Datenbank von Seiten erstellen, die keine iframe-Einbettung erlauben.

    
Matt De Leon 14.09.2011, 20:02
quelle

3 Antworten

6

Überprüfen Sie den x-frame-options-Header mit dem folgenden Code

%Vor%

Wenn der Rückgabewert DENY, SAMEORIGIN oder ALLOW-FROM ist, kann iframe nicht mit dieser URL verwendet werden.

    
vinod 06.07.2014 15:03
quelle
2

Wahrscheinlich ziemlich spät, aber was Sie tun müssen, ist eine Anfrage, wahrscheinlich von Ihrem Server und suchen Sie nach dem X-Frame-Optionen-Header. Wenn es überhaupt da ist, können Sie einfach einen neuen Tab öffnen, denn wenn es da ist, dann ist einer der folgenden: DENY, SAMEORIGIN, ALLOW-FROM. In jedem dieser Fälle ist es wahrscheinlich, dass Sie nicht darauf zugreifen können, um es in einem Iframe zu öffnen.

    
ars265 14.02.2013 15:23
quelle
1

Dieses Thema wurde im Internet für immer mit einem besonders interessanten (gescheiterten) Versuch diskutiert:

Rahmen Buster Buster ... Buster-Code benötigt

Die Quintessenz ist, dass selbst wenn Sie in der Lage sind, einen Proxy zu erstellen, der den Inhalt der gewünschten Seite in Ihrem iframe analysiert und den fehlerhaften Code entfernt, bevor er an den iframe geliefert wird Unterlassen Sie "von der Seite, wenn sie von Ihnen hören, dass Sie es tun.

Wenn Sie nicht möchten, dass Ihre Entwicklung allgemein verfügbar ist, könnten Sie wahrscheinlich damit durchkommen. Wenn Sie möchten, dass Ihre Entwicklung populär wird, vergessen Sie sie und bauen Sie weniger umständlich damit umzugehen.

Oder entwickeln Sie es nur für mobile ...;)

AKTUALISIEREN: OK, nachdem du deinen Kommentar gelesen hast, ist hier ein kleiner Vorgeschmack:

in javascript erfassen Sie den Klick auf den Link

%Vor%

Serverseite in PHP

%Vor%     
T9b 15.09.2011 13:19
quelle