Java面试题:Session和Cookie的区别?

本文将回答Java面试题“Session和Cookie的区别?”希望能够帮助到需要面试的你。

什么是 session?

在专业术语中,Session是指会话控制,是将会话数据保存在服务器上一种机制。当客户端访问服务器的时候,服务器会把信息以某种形式记录在服务器上,恰恰和Cookie 相反(cookie 是将数据保存到客户端)。

当客户端(浏览器)向服务器发出请求的时候,服务器会保存一个 session,并且返回一个唯一的 session id 给客户端,客户端将该 session id 保存到浏览器的 cookie 中,下次请求时自动将该 session id 传递给服务端,服务端根据 session id 找到用户的 session 信息,认证用户的身份权限等等。

简单点说,session 就是服务端保存的用户会话信息,一个 session id 对应一个 session,而这个 session 保存了用户信息,如:用户名、电话、邮箱、权限等等信息,session 可以保存内存中、Redis中、数据库中等等。

什么是 cookie?

Cookie 有时也用其复数形式 Cookies 表示。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行 Session 跟踪(即存储 session id)而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息 。

浏览器中按 F12 ,选择“应用”->“存储”->“Cookie”,选择对应的网址查看 Cookie 信息。如下图:

Java面试题:Session和Cookie的区别?

上图是笔者登录百度后查看的 Cookie 信息。

session 和 cookie 的区别

存储位置

session 数据存储在服务器端,cookie 数据存储在浏览器,即客户端。

存储数据

session 能够存储任意的 Java 对象,cookie 则只能存储字符串对象。

存储大小

由于 session 是存储到服务端的,理论上可以存无限大,但是由于考虑到性能问题,通常 session 不会存储太多数据,避免造成占用大量内存(内存资源是很稀缺的)。而单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie。

安全性

由于 session 存储在服务端,相对于 cookie 更安全。而 cookie 则是存储在客户端浏览器,更容易被人窃取。

锲而舍之,朽木不折;锲而不舍,金石可镂。——《荀子·劝学》
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号