Ich habe eine Webanwendung, die localStorage verwendet. Jetzt möchten wir diese Web-App über iframe auf anderen (Drittanbieter-) Websites einbetten. Wir möchten einen Iframe einbetten, der youtube ähnlich ist, damit andere Webseiten unsere Web-App in einen iFrame einbetten können. Funktional ist es genauso, als wäre es nicht eingebettet. Aber es funktioniert nicht. Chrome gibt die Fehlermeldung:Iframe in Chrome Fehler: Fehler beim Lesen von "localStorage" von "Window": Zugriff für dieses Dokument verweigert
Uncaught SecurityError: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.
ich nur die folgende Prüfung (in der iframe):
if (typeof window.localStorage !== 'undefined') {
// SETUP SESSION, AUHT, LOCALE, SETTINGS ETC
} else {
// PROVIDE FEEDBACK TO THE USER
}
ich meine Sicherheitseinstellungen in Chrome überprüft wie in another Stackoverflow Thread beschrieben, aber es funktioniert nicht. Gibt es eine Änderung, um die Einbettung zu ermöglichen, ohne die (Standard) Sicherheitseinstellungen der meisten modernen Browser anpassen zu müssen?
Um weitere Informationen zu geben, verwenden wir Ember-CLI für unsere Web-App und eingeschaltet CSP (more info about the Ember-CLI CSP). Könnte CSP dazu führen, dass unsere Webanwendung Sicherheitsfehler verursacht?
Ihr Titel erwähnt ein 'iframe'? ist etwas im iframe, das versucht, auf den lokalen Speicher zuzugreifen? das klingt, als könnte es eine Sicherheitswarnung auslösen? – Grapho
@Grapho: Ich habe meine erste Frage umformuliert. Wir möchten nur anderen Webseiten die Möglichkeit geben, unsere Web-App über 'iframe' einzubetten. Der 'window.localStorage'-Aufruf befindet sich also in unserem Web-App-Code und damit im' iframe'. Wir wollen keine Cross-Domain-Sache machen. Stellen Sie einfach unsere Web-App über iframe zur Verfügung. Hoffe das klärt das Problem. – tschoartschi
Wenn die Webanwendung lokalen Speicher verwendet, führt die Ausführung in einem iframe _will_ zu einem domänenübergreifenden Problem, da Window global ist. Es wird versucht, auf window.localstorage des lokalen Clients zuzugreifen .. denken Sie daran, dass locastorage ein Clientbrowser ist Ding .. nicht eine gehostete/Server-Sache .. Ihre App hat kein Wissen, wenn es von überall serviert wird – Grapho