"Uncaught SecurityError: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.",
首先梳理一下Storage的使用规则
localStorage需要在相同协议+相同主机名+相同端口,也可以说是在同一域名下使用。
sessionStorage比localStorage更严苛一点,除了协议、主机名、端口外,还要求在同一窗口(也就是浏览器的标签页)下。
经过测试,得出以下结论
- 本地打开的页面(File://协议下的),会公用一个localStorage,比如F盘打开了一个页面,存储一些key-value,C盘打开的页面也可以访问到。
- 同一域名下的可以互相访问,比如http://aaa.com/a/a_1.html添加的,在http://aaa.com/b/b_1.html下也可以访问。
- 不同域名下不可互相访问,比如http://aaa.com/a/a_1.html 和 http://bbb.com/b/b_1.html就不能互相访问
- 利用模板字符串直接塞到iframe/webview(原生提供的容器)里的,其实是没有域名的,就会导致这个错误