一、request headers中的cookie和session机制的作用与区别
Cookie 和 Session 是两种在客户端和服务器之间保持状态的技术。HTTP 协议本身是无状态的,这意味着服务器无法从上一次的请求中保留任何信息到下一次请求。Cookie 和 Session 机制就是为了解决这个问题。
Cookie:
1、Cookie 是服务器发送到用户浏览器并保存在浏览器上的一块信息,后续请求浏览器会自动带上这个 Cookie 信息,通过这种方式可以实现保持用户的状态。
2、Cookie 数据始终在同源的 http 请求中携带(即使不需要),即使保存在浏览器也会过期,不过过期时间可以自定义。
3、Cookie 数据还有路径(path)的概念,可以限制 Cookie 只属于某个路径下。
4、Cookie 的大小有限制,一般不超过 4KB。
Session:
1、Session 是另一种记录客户状态的机制,不同的是 Session 是保存在服务器端的。用户浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录在服务器上。这就可以提供跨请求的状态维护。
当浏览器请求服务器,如果需要记录业务信息(比如用户的登录状态),服务器会在响应头中写入一个 Session ID,浏览器在下次请求时会带上这个 Session ID,服务器通过这个 Session ID 就能找到这个用户的会话信息。
2、Session 的存储方式可以有多种,常见的有:内存、数据库、Redis 等。
3、Session 的存储容量基本上是没有限制的,取决于你的存储方式。
区别:
1、Cookie 数据存放在客户的浏览器上,Session 数据放在服务器上。
2、Cookie 不是很安全,别人可以分析存放在本地的 Cookie 并进行 Cookie 欺骗,考虑到安全应当使用 Session。
3、S