前沿:cookie和storage的区别就不用说了啊。对cookie可以参考
这里1
这里2
- cookie存储数据和url关系
- 语法
setcookie(name,value,expire,path,domain,secure)
参数 | 是否必填 | 默认值 | 作用 |
---|---|---|---|
name | 是 | 无 | cookie 的名称。 |
value | 是 | 无 | cookie 的值。 |
expire | 否 | 默认为关闭浏览器Cookies生命周期到期 | cookie 的有效期。 |
path | 否 | 默认值为设置该cookie的网页所在的目录 | 规定 cookie 的服务器路径。 |
domain | 否 | 默认值为设置该cookie的网页所在的域名 | cookie 的域名。 |
secure | 否 | 空(不加密) | 规定是否通过安全的 HTTPS 连接来传输 cookie。 |
httponly | 是 | 空(js允许访问) | 只能通过http协议才能访问该cookie,意味着客户端javascript就不可操作这个cookie。 |
- cookie浏览器的同源策略具体如下
URL | domain | path | 是否允许 |
---|---|---|---|
http://www.a.com/a http://www.a.com/a.js http://www.a.com/b http://qiji.a.com/a.js |
a.com | / | 允许 |
http://qiji.a.com/a http://qiji2.a.com/a |
qiji.a.com | / | 不允许 |
http://qiji.a.com/a http://qiji.a.com/b |
qiji.a.com | / | 允许 |
http://qiji.a.com/a http://qiji.a.com/a/b |
qiji.a.com | /a | 允许 |
- 总结:页面能访问那些cookie跟从哪里引入js没有半毛钱关系。而跟html页面本身的domain和path有很直接的关系
- ⚠️:要删除一个cookie,domain和路径必须完全相同
- storage存储数据和url管理
-
概念
localStorage(
这里
)和 sessionStorage的主要区别是:localStorage的生命周期是永久的,意思就是如果不主动清除,存储的数据将一直被保存。而sessionStorage顾名思义是针对一个session的数据存储,生命周期为当前窗口,一旦窗口关闭,那么存储的数据将被清空。 - 语法
window.localStorage
//保存数据
localStorage.setItem("key", "value");
//读取数据
var lastname = localStorage.getItem("key")
//删除数据
localStorage.removeItem("key");
- ⚠️:localStorage在浏览器的隐私模式下面是不可读取的
- localStorage浏览器的同源策略具体如下:
URL | 说明 | 是否允许通信 |
---|---|---|
http://www.a.com/a.js http://www.a.com/b.js |
同一域名下 允许 | 允许 |
http://www.a.com/lab/a.js http://www.a.com/script/b.js |
同一域名下不同文件夹 | 允许 |
http://www.a.com:8000/a.js http://www.a.com/b.js |
同一域名,不同端口 | 不允许 |
http://www.a.com/a.js https://www.a.com/b.js |
同一域名,不同协议 | 不允许 |
http://www.a.com/a.js http://70.32.92.74/b.js |
域名和域名对应ip | 不允许 |
http://www.a.com/a.js http://script.a.com/b.js |
主域相同,子域不同 | 不允许 |
http://www.a.com/a.js http://file.a.com/b.js |
同一域名,不同二级域名(同上 | 不允许(cookie这种情况下也不允许访问) |
http://www.cnblogs.com/a.js http://www.a.com/b.js |
不同域名 | 不允许 |
总结:只要不同源就不能共享localStorage的数据
-
sessionStorage浏览器的同源策略具体如下:
不同页面间无法共享sessionStorage的信息。这里需要注意的是,页面仅指顶级窗口,如果一个页面包含多个iframe且他们属于同源页面,那么他们之间是可以共享sessionStorage的
版权声明:本文为weixin_39579517原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。