名称 | 存储大小 | 有效期限 | 是否与服务端通信 | 作用域 | 适合场景 |
cookie | 4k | 默认关闭浏览器前有效,cookie的信息存在浏览器内存中??? 若设置了有效期限,则在该期限内始终有效,即使关闭了浏览器,因为设置期限时cookie的信息存在了硬盘中。 | 参与,每次都会携带http的头信息中 | 必须同源; 不可以在不同浏览器; 可以是不同Tab页面;
| 记住密码功能 |
sessionstorage | >=5M | 在当前会话下有效,关闭页面或者浏览器时会被清空。(存储在浏览器内存中??) 不是一种持久化的本地存储,仅仅是会话级别的存储。 | 不参与 | 必须同源; 不可以在不同浏览器; 不可以在不同Tab页面; | 一些敏感信息 |
localstorage | >=5M | 一直有效,除非手动清除(存储在本地硬盘中) | 不参与 |
必须同源; 不可以在不同浏览器; 可以在不同的Tab页面; 可以在同一浏览器不同窗口; | 不敏感的信息 |
cookie与session | 位置 | 关系 | |
cookie | 客户端 | ①同一浏览器不同窗口访问服务器时,共用一个session。但如果把两个窗口都关了再重新打开访问服务器,会新生成一个不同的session。 ②同一浏览器同一窗口打开的不同标签页会共享窗口的cookie,因此共享一个session(通过cookie中的sessionID去服务器找到同一个session)。 ③不同浏览器,不同session。 | cookie是在客户端用来存储服务器端发送的一个身份号码,以便接下来访问服务器时服务器允许访问并且知道客户端要访问哪些数据。 在$_COOKIE['PHPSESSIONID']中存储sessionId。 |
session | 服务器端 | 关闭浏览器窗口,session会话还没有被销毁,只是失效了,因为cookie中的sessionID没有了(这是因为cookie有效期默认是关闭浏览器前,若设置了有效期,此时cookie还在,还可以会话,也就是有些情况下关闭了浏览器但重新打开浏览器去访问网站还是已登录状态),所有无法连接会话。 | 当一个session被启用时,一个唯一的标识就通过请求的响应发送给客户端并被客户端保存到了cookie中。session对象是用户第一次请求服务器时被创建的。 |