什么是cookie?什么是session?session和cookie有什么区别?
部分来源:https://www.nowcoder.com/questionTerminal/5a2d287965824d3ca93921bf89f8654c
cookie和session都是回话跟踪技术。
cookie(存客户端、不安全、存放数据量有限)
cookie是Web服务器发送给浏览器的一块信息。浏览器会在本地文件中给每一个Web服务器存储cookie。以后浏览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。
(cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户的状态,就使用response向客户端浏览器颁发一个cookie。客户端浏览器会把cookie保存起来。当浏览器再次请求该网站时,浏览器就会把请求地址和cookie一同给服务器。服务器检查该cookie,从而判断用户的状态。服务器还可以根据需要修改cookie的内容。)
cookie有两种
- 一种是基于窗口的,浏览器窗口关闭后,cookie就没有了;
- 另一种是将信息存储在一个临时文件中,并设置存在的时间。
在使用cookie时要注意几点:首先不要在cookie中存放敏感信息;(不安全)
其次cookie存储的数据量有限(4k),不能将过多的内容存储cookie中;
再者浏览器通常只允许一个站点最多存放20个cookie。
session(存服务器、占内存、)
session是另一种记录客户状态的机制。不同的是cookie保存在客户端浏览器中,而session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是session。客户端浏览器再次访问时只需要从该session中查找该客户的状态就可以了。
(当用户通过浏览器和服务器建立一次会话后,sessionID就会随响应信息返回存储在基于窗口的cookie中,那就意味着只要浏览器没有关闭,会话没有超时,下一次请求时这个sessionID又会提交给服务器让服务器识别用户身份。)
session话中可以为用户保存信息。当然,和用户会话相关的其他信息(除了会话ID)也可以存在cookie方便进行会话跟踪。
不同点
session对象是在服务器内存中的,而基于窗口的cookie是在客户端内存中的。
cookie不是很安全,别人可以分析存放在本地的cookie,进行cookie欺骗;session会在一定时间内保存在服务器上,当访问增多,会占用服务器性能
cookie保存数据不能超过4k,很多浏览器都限制一个站点最多存放20个cookie