Cookie以及Session
Cookie
什么是Cookie
1.服务器通过Set-Cookie头给客户端一串字符串。
2.客户端每次访问相同域名的网页时,必须带上这段字符串。
3.客户端要在一段时间内保存这个Cookie。
4.Cookie默认在页面关闭后失效,但后台可以任意设置Cookie的过期时间。
Session
什么是Session
Session是服务器上的哈希表。
服务器通过Cookie给用户一个SessionId,SessionId对应服务器里面的一小块内存。每次用户访问服务器的时候,服务器就通过SessionId去读取对应的Session,获取到用户的隐私信息。
1.将SessionId通过Cookie发给客户端。
2.客户端访问服务器时,服务器读取SessionId。
3.服务器有一块内存(哈希表)保存了所以Session。
4.通过SessionId我们可以得到对应用户的隐私信息,如ID,email等。
5.这块内存(哈希表)就是服务器上的所有Session。PS:SessionId通常为随机数,以保证安全。
LocalStorage是什么
LocalStorage是html5技术提供的一个API;
LocalStorage的实质是一个hash;
LocalStorage是浏览器上的哈希表;
LocalStorage能做到持久化存储。
比如:
LocalStorage.png
代码为:
let a = localStorage.getItem('a')
if(!a){
a = 0
} else {
a = parseInt(a,10) + 1
}
localStorage.setItem('a',a)
localStorage的特点
1.LocalStorage跟HTTP无关。
2.HTTP不会带上LocalStorage的值。
3.只有相同域名的页面才能互相读取LocalStorage(但并没有同源那么严格)
4.每个域名LocalStorage最大存储量为5MB左右(每个浏览器不同)
5.常用场景是记录有没有提示过用户(及一些不敏感信息)
6.LocalStorage永久有效,除非用户自己清理。
SessionStorage
作用基本同上,
但SessionStorage在用户关闭页面后就失效。
Cookie和Session的关系
一般来说,Session是基于Cookie来实现的,因为Session必须将SessionID放在Cookie里再发给客户端,Session是依赖Cookie的。
Cookie和LocalStorage的区别是什么
Cookie每次请求的时候都会带给服务器,而LocalStorage不会,另外Cookie的存储量一般在4KB左右,LocalStorage在5MB左右。