sessionStorage in iframe
Ich bin zu haben, mehrere iframes auf meiner Seite und ich werde ganz intensiv nutzen sessionStorage in Ihnen. Was ich bin neugierig ist, wenn ich getrennte Speicher oder einen gemeinsamen für alle iframes? Wie die Größenbeschränkungen gelten?
- Lokaler Speicher pro domain. Alle Seiten, die von einer Domäne, können Sie speichern und Zugriff auf die gleichen Daten. Also das würde auf jeden Fall teilen die lokale Speicherung von Daten zwischen frames (vorausgesetzt, Sie sind aus der gleichen Domäne). Session storage ist pro browser-tab oder Fenster, so dass ich vermute, es verwendet separate Speicher wie ich denke immer, dass frames als völlig unterschiedliche windows. Dies ist eine interessante und relevante Lesen Sie über die browser - / Rahmen-Sicherheit: stackoverflow.com/questions/2569768/...
- Ich brauche keine lokale Speicherung. Ich brauche session-Speicherung. Ich denke, die gleiche, aber ich hoffte, dass jemand weiß das sicher.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn sessionStorage geteilt wird, hängt von der iframe-Seite und es ist Ursprung, was ist der domain-Teil der URL. Wenn Sie eine Webseite bei
http://myserver/test.html
und es ist auchhttp://thatserver/some.html
über einen iframe der iframe-Seite hat die domainthatserver
. So ist die Herkunft unterscheidet und die sessionStorage nicht geteilt. Aber wenn die iframe-Seite isthttp://myserver/some.html
es hat den gleichen Ursprung und den gleichen Ursprung haben.Nun gibt es einen weiteren trick: Die sandbox - Attribut für das iframe. Wenn Sie schreiben
<iframe sandbox>
ohne den Wertallow-same-origin
den Inhalt des iframe wird eine einzigartige Herkunft. Das heißt, es würde eine andere sessionStorage-unabhängig von der tatsächlichen Herkunft ist diese Seite. Schreiben Sie<iframe sandbox="allow-same-origin">
sandbox-Inhalte UND lassen Sie den Inhalt des iframe-zu den gleichen Ursprung haben (aber nur wenn wenn die eigentliche gleichen Ursprung).Nun Besondere Hinweise: sandboxed iframes wird nicht unterstützt "localStorage"pro spec. Und in webkit-Browsern und mozilla firefox ist, wird eine Ausnahme geworfen, wenn der Sandbox-iframe-Inhalt wird versuchen, Zugriff auf sessionStorage.
OK, ich habe einen test selbst. Zumindest in Chrome (44) und Firefox (40) der sessionStorage ist freigegeben Seite und die iframes enthalten, wenn Sie sind in der gleichen Domäne und nicht wenn Sie in verschiedenen Domänen.