我正在尝试将一些信息存储在浏览器本地存储中。我的代码在 Chrome 上运行 fine ,但是,我在Firefox和Safari上遇到安全错误并收到警告
Firefox版本:63.0.1(64位)
StackTrace:
ERROR DOMException: "The operation is insecure." EventDetailsComponent.html:1
View_EventDetailsComponent_0
EventDetailsComponent.html:1 proxyClass compiler.js:17129
./node_modules/@angular/core/fesm5/core.js/DebugContext_.prototype.logError
core.js:20684
./node_modules/@angular/core/fesm5/core.js/ErrorHandler.prototype.handleError
core.js:12632
./node_modules/@angular/core/fesm5/core.js/ApplicationRef.prototype.tick/<
core.js:14878:54
./node_modules/zone.js/dist/zone.js/</ZoneDelegate.prototype.invoke
zone.js:388
./node_modules/zone.js/dist/zone.js/</Zone.prototype.run
zone.js:138
错误消息:
[WDS] Disconnected! vendor.js:157169:5 close
ERROR DOMException: "The operation is insecure." EventDetailsComponent.html:1
View_EventDetailsComponent_0 EventDetailsComponent.html:1 proxyClass
Request to access cookie or storage on “http://localhost:4200/” was blocked because we are blocking all storage access requests.
本地存储服务:
public getFav(): FavoriteStorage[] {
return JSON.parse(window.localStorage.getItem('favlist'));
}
private setLocalStorageFavList(favL: FavoriteStorage[]): void {
window.localStorage.setItem('favlist', JSON.stringify({ favList: favL }));
}
我尝试使用localStorage.setItem()/ getItem()代替window.localStorage.setItem()/ getItem()
答案 0 :(得分:0)
localStorage与globalStorage [location.hostname]相同,其中 范围限于HTML5来源(方案+主机名+ 非标准端口)
旧的Firefox行为存在错误,并且已修复该错误。按照规范,设置document.domain绝对不会对localStorage的行为产生任何影响,因此,在您的情况下,您尝试将localStorage设置为另一个域,这是不允许的。
有关详细信息,请参见https://bugzilla.mozilla.org/show_bug.cgi?id=495337和localStorage规范。
您可以在documentation
中阅读更多内容