HTTP 是一种”无状态“的协议
- 客户端访问页面时,客户端都会打开于web服务器的单独连接
- 并且服务器不会自动保留之前客户端请求的任何信息
- 所以服务器不能识别多个请求是否来自相同的客户端(浏览器)
但是在很多业务,都有以下需求
- 服务器能够识别多个请求是否来自相同的客户端
- 相同的客户端共享数据
可以用以下技术完成
- Cookie
- Session
Cookie是什么?
- Cookie是直接存储在浏览器的一小串数据
- 使用document.cookie 访问浏览器的Cookie
- 修改Cookie时,只会修改其中提到key的cookie
- 单个cookie 最大是4kb,最多有20+个cookie(取决于浏览器)
- 假如没有设置Cookie的过期时间,则当浏览器关闭时,cookie失效
- 假如设置了Cookie的过期时间,在有效期之内,即使关闭了浏览器,Cookie也不会失效
怎么增加Cookie
- 浏览器:RequestHeader
- 服务器可以用ResponderHeader,通知浏览器写入Cookie
Session是什么?
Session是存储在服务器的,默认有效期三十分钟
总结:Cookie跟Session的区别
Cookie
- 数据存储在浏览器客户端
- 数据有大小跟数量的限制
- 适合存储一些小型的,不敏感的数据
- 默认,关闭浏览器就会失效
Session
- 数据存储在服务器
- 数据没有大小的限制
- 可以存储一些大型数据
- 默认,三十分钟 未使用,就会失效
说到这里,但是还是很模糊
继续总结
Cookie,Session的本质
- 客户端首次访问服务器,肯定是不带Cookie的,
- 服务器收到请求之后,看到这条请求没Cookie,就会生成Ssssion,并且还给Session 生成个JESSIONID,比如是”2333333333“,
- 随后通过ResponderHeader,通知浏览器,写入JESSIONID = ”2333333333“
- 下次请求,浏览器请求就会带着JESSIONID = ”2333333333“ 的Cookie,走到服务器,服务器看到这个Cookie是有JESSIONID,就会根据JESSIONID找到原来的Session
- 至此,服务器知道了是相同的客户端
说到这里,可以得分啦