Dokument in Webseite einbinden: iframe, object oder embed?

Seit HTML5 ist das iframe-Tag zum bevorzugten Element für das Einbinden von HTML-Dokumenten in die eigene Webseite geworden. Das object-Tag kommt quasi nicht mehr vor.

object Tag oder iframe

Der Plus-Punkt des object-Tags waren die param-Tags, die innerhalb des object-Elements die Aktionen des Browsers lenken, auch wenn der Browser das Objekt gar nicht kennt. object war als HTML-Element für alle Arten von Medien gedacht: Ob einfaches Bild, PDF, SVG, Video oder ganze HTML-Seite.

iframe ist auf das Anzeigen von HMTL-Dokumenten innerhalb eines internen Fensters spezialisiert und bringt starke Sicherheitsvorkehrungen mit. Sowohl die aufrufende Webseite als auch das darin liegende iframe können ihr eigenes CSS und Javascript mitbringen und kommen der Hostseite dabei nicht ins Gehege.

Sicherheitsaspekte – iframe aktuell

Das <iframe>-Tag galt in alten HTML-Versionen als »deprecated« – veraltert und unerwünscht –, das object-Tag hingegen nicht. Das wirft die Frage auf, warum das <object>-Tag erlaubt war, das <iframe>-Tag hingegen ausgegrenzt wurde.

In einem iframe können Elemente aus anderen Domainen eingebunden werden. Der Browser konnte nicht ohne Weiteres prüfen, ob der Inhalt des iframes aus einer vertrauenswürdigen Quelle stammt. iframe-Elemente könnten also z.B. eine Tür für das gefürchtete Cross Side Scripting öffnen.

Beim object-Tag gibt es diese Bedenken nicht, externe Elemente konnten nur sehr eingeschränkt eingebettet werden.

Heut hat sich iframe als bevorzugte Methode durchgesetzt, weil es die robusteste Technik ist und seine Sicherheitsarchitektur (Same Origin und Sandbox) den heutigen Bedürfnissen am besten entgegen kommt.

iframe, object, embed – was ist der Unterschied?

<embed> ist ein weiteres legales und standardisiertes HTML-Element zum Einbetten von externen Dokumenten.

iframe
Einbetten einer HTML-Seite
Typischer Einsatz: z.B. YouTube-Videos, Karten, andere Webseiten
+ Vollwertige, interaktive Seiten können eingebettet werden
Kann Tracking oder Sicherheitsprobleme verursachen
embed
Einbetten von nicht-HTML-Inhalten wie PDF, Flash, Audio, Video etc.
Typischer Einsatz: z. B. PDF-Viewer, Audio-Plugins
+ Sehr direkt, braucht keine weiteren Tags
Eingeschränkte Kontrolle, weniger flexibel
object
Allgemeiner Container für beliebige externe Ressourcen (HTML, Bild, Video, PDF, Applets)
Typischer Einsatz: z.B. alternative Inhalte, Fallbacks
+ Fallbacks im Tag möglich, vielseitig
Komplexer, weniger konsistent im Verhalten
  • <iframe> ist ideal für HTML-Webseiten.
  • <embed> ist ein schnelles Mittel für Multimedia oder Dokumente.
  • <object> ist am flexibelsten, aber schwieriger im Umgang.

In der Praxis ist <iframe> am gebräuchlichsten, während <embed> seltener verwendet wird. <object> wird eigentlich nur noch eingesetzt, wenn Fallback-Inhalte wichtig sind.

object oder iframe?

iframe hat als Verpackung für youTube-Videos einen Karrieresprung gemacht. Mit seinen Attributen für iframe (z.B. sandbox) kann sich das aufrufende HTML-Dokument gegen Schädlinge abgeschotten.

Die Syntax für iframe, object und auch für das wiedererweckte embed-Tag ist nahezu gleich. iframe erlaubt allerdings keinen alternativen Inhalt zwischen öffnendem und schließenden Tag, embed hat kein schließendes Tag. Ergo: Beide können keine alternativen Inhalte anzeigen.

<object data="airplane.svg" width="400" height="240"></object>
<iframe src="airplane.svg" width="400" height="240" sandbox></iframe>
<embed src="airplane.svg" width="400" height="240">

Sowohl bei object, iframe als auch bei embed wirkt CSS aspect-ratio für die Anpassung an den Breakpoint.

Von »außen« lassen sie sich kaum voneinander unterscheiden (oben: object, iframe, embed), allerdings bringt iframe von Haus aus border rundherum mit.

Das iframe-Element in der Mitte zwischen object und embed ist durch das Sandbox-Attribut vor der Ausführung von Skripten geschützt: Da bleibt Javascript außen vor und selbst ein Link könnte nicht angeklickt werden. Kein Flieger durchkreuzt per Javascript das iframe-Element, aber bei object und embed wirkt Javascript.

embed ist ein historisches HTML-Tag aus der Zeit der Browserkriege und wurde aus Gründen der Kompatibilität zu ganz ganz alten Browsern in HTML5 wieder aufgenommen.

Es spricht nichts dagegen, object für PDF, SVG, HTML-Dokumente und interaktive Animationen von derselben Domain einzusetzen. Das object-Tag erlaubt alternativen Inhalt – z.B. für den Fall, dass Medien nicht geladen werden können.

Bei fremden Domains ist immer ein iframe angebracht, da es einen besseren Schutz der aufrufenden Seite bietet. Generell ist iframe heute die Technik der Wahl, denn es ist robust, bietet die höhere Sicherheit, mehr Funktionen und kann dynamisch entscheiden, welche Medien eingesetzt werden.

Refused to display

Die meisten Webserver schützen den Inhalt von Webseiten und Medien vor dem Einbinden mit iframe, embed oder object in Webseiten von Dritten.

Refused to display 'https://xxxxxxxx' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.

Für den Aufruf externer Medien wie z.B. bei youTube-Videos muss der externe Server den Zugriff erlauben, z.B. einem Eintrag in die Konfigurationsdatei des Servers.

Header always unset X-Frame-Options
2025-04-05 SITEMAP BLOG
Suchen auf mediaevent.de