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>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
Mehr zu HTML object oder iframe
- HTML iframe Mit dem sandbox-Attribut kann die aufrufende Seite aus Sicherheitsgründen Scripting und Formulare ausschließen.
- HTML object als Allround-Tag für Medien gedacht, mit Steuerung für Plugins ausrüstbar.