iFrame¶
Über die iFrame-Komponente können fremde Inhalte einfach und ohne große Anpassung in die eigene Konsole integriert werden.
Konfiguration¶
Die iFrame-Komponente verfügt über weitere Konfigurationseinstellungen, die über die Argumente konfiguriert werden.
{
"module": {
"prototype": "Alvine.Package.UI.Content.Iframe",
"location": "//cdn.alvine.io/console/latest/alvine/package/ui/content/iframe.js"
},
"arguments": {
"permissions": "allow-same-origin allow-scripts allow-popups allow-forms",
"url": "http://example.com",
"title": "My example",
"frame": {
"class": "embed-responsive-item",
"auto-resize": true
},
"container": {
"class": "embed-responsive embed-responsive-1by1"
}
},
"handler": "example",
"keybinding": "e",
"navigation": {
"label": "i18n:example",
"mountpoint": "main.menu.favourites"
}
}
Konfigurationswerte¶
Schlüssel | Beschreibung | Default | Beispiel |
---|---|---|---|
permissions | Berechtigungen die der Frame besitzen soll | undefined | allow-same-origin |
url | URL der im iFrame zu ladenden Webseite | undefined | |
title | Titel, der über dem Frame ausgegeben wird | undefined | <h4>My Frame</h4> |
frame.auto-resize | Automatische Höhenanpassung des Frames | WAHR | WAHR |
frame.id | ID des Frame-Containers (Standard: iframecomponent) | iframecomponent | myframe |
frame.class | CSS-Klasse, die dem iframe-Tag mitgegeben werden soll | undefined | embed-responsive-item |
container.class | CSS-Klasse des umschließenden DIV | undefined | embed-responsive embed-responsive-1by1 |
Titel¶
Der Titel, der über dem Frame ausgegeben werden soll, muss inkl. HTML definiert werden. Da es sich um ein Bootstrap-Card-Objekt handelt, kann die CSS-Klasse card-title genommen werden
<h4 class="card-title">My Frame</h4>
Auto-Resize¶
Für die automatische Höhenanpassung wird das Plugin http://davidjbradshaw.github.io/iframe-resizer/ zum Einsatz. Damit diese Erweiterung funktioniert, muss im Zieldokument das folgende Javascript eingebunden werden.
<script src="//cdnjs.cloudflare.com/ajax/libs/iframe-resizer/3.5.5/iframeResizer.contentWindow.min.js"></script>
Um PDF oder ODF Dokumente anzeigen zu können, kann auf viewerjs zurückgegriffen werden.
Sicherheit¶
Die iFrame Komponente wird mit dem sandbox Attribute ausgeliefert und verhindert somit, dass der nachgeladene Inhalt auf die Konsole zugreifen kann.
Folgende Einschränkungen gelten:
- JavaScript wird im gerahmte Dokument nicht ausgeführt werden. Dazu gehören nicht nur explizit JavaScript der über Script-Tags geladen wird, sondern auch Inline-Event-Handler und javascript: URLs. Dies bedeutet auch, dass in noscript-Tags enthaltenen Inhalte angezeigt werden, genau so, wie wenn der Benutzer selbst Skripte deaktiviert hat.
- Das gerahmte Dokument wird in einem eigenen Herkunfts-Bereich (Origin) geladen; Das Dokument hat damit keinen Zugriff auf Daten jeglicher Herkunft. Das betrifft Cookies und andere Speichermechanismen (DOM Storage, Indexed DB, etc.)
- Das gerahmte Dokument kann keine neuen Fenster oder Dialoge (über window.open oder target = "_ blank") erstellen.
- Formulare können nicht benutzt werden.
- Plugins werden nicht geladen.
- Innerhalb des gerahmte Dokument kann man navigieren, jedoch hat es keinen Zugriff auf die Konsole. window.top.location Einstellung.
- Elemente die autofocused Formularelemente, autoplaying Videos etc. beinhalten werden blockiert.
- Pointer Lock Sperren werden nicht eingerichtet.
- Das nahtlose Attribut wird ignoriert.
X-Origin¶
Aus Sicherheitsgründen werden einige Webseiten nicht in einem iFrame geladen. Muss man allerdings einen solchen Inhalt einbinden, kann man im Chrome und Firefox für diese Ausnahmefälle die Erweiterung Ignore X-Frame headers hinzufügen (Links siehe unten). Diese Erweiterungen schalten dieses Sicherheitsfeature ab. Wenn man dieses Feature damit ausschaltet, sollte man dem iFrame keine weiteren Berechtigungen geben.
Wichtig
Durch diese Plugins kann es zu großen Sicherheitsproblemen kommen. Nur einsetzen, wenn man weiß was man macht!
Berechtigungen¶
Die einzelnen Rechte können über die Berechtigungen gegeben werden.
- allow-forms Erlaubt Formulare abzuschicken
- allow-popups Erlaubt Popups (window.open(), showModalDialog(), target=”_blank”, etc.).
- allow-pointer-lock Erlaubt pointer lock.
- allow-same-origin erlaubt es dem Dokument seine Herkunft zu verwalten. Ein Dokument von https://example.com/ hat damit Zugriff auf die Daten von dieser Domain
- allow-scripts erlaubt Javascript und das automatisch ausführen von trigger
- allow-top-navigation erlaubt dem Dokument aus dem iframe auszubrechen
- allow-popups-to-escape-sandbox erlaubt das öffnen eines neuen Tabs ohne Einschränkungen