cookie与session的区别


Cookie 和Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。
 
Cookie一般用来保存用户信息,Session主要作用是通过服务端记录用户的状态。
 
工作原理
 
一、Cookie
1、浏览器端第一次发送请求到服务器端
2、服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端
3、浏览器端再次访问服务器端时会携带服务器端创建的Cookie
4、服务器端通过Cookie中携带的数据区分不同的用户
 
二、Session
1、Session是基于Cookie实现的。浏览器端第一次发送请求到服务器端,服务器端创建一个Session,为了保证在一个会话的多次请求之间Session是同一个,同时会创建一个特殊的Cookie,其name为JSESSIONID的固定值,value为session对象的ID,然后再将该Cookie发送至浏览器端。
2、浏览器端发送第二次及以上的请求到服务器端,浏览器端访问服务器端时就会携带该name为JSESSIONID的Cookie对象
3、服务器端根据name为JSESSIONID的Cookie的value,去查询Session对象,从而区分不同用户。
 

注:对于第三步(3)

1、如果name为JSESSIONID的Cookie不存在,即发生了关闭或更换浏览器的情况,返回(1)中重新去创建Session与特殊的Cookie

2、name为JSESSIONID的Cookie存在,根据value中的SessionId去寻找session对象

3、value为SessionId不存在,返回(1)中重新去创建Session与特殊的Cookie

4、value为SessionId存在,返回session对象

 

相同点

1、Cookie和Session都是来完成多次请求间的数据共享

 
不同点
 
1、对象不同
cookie:是针对每个网站的信息,每个网站只能对应一个,其他网站无法访问,这个文件保存在客户端,每次您拨打相应网站,浏览器都会查找该网站的 cookies,如果有,则会将该文件发送出去。cookies文件的内容大致上包括了诸如用户名、密码、设置等信息。
session:是针对每个用户的,只有客户端才能访问,程序为该客户添加一个 session。session中主要保存用户的登录信息、操作信息等等。此 session将在用户访问结束后自动消失(如果也是超时)。
 
2、存储数据大小不同
cookie:一个 cookie存储的数据不超过3K。
session:session存储在服务器上可以任意存储数据。当 session存储数据太多时,服务器可选择进行清理。
 
3、生命周期不同
cookie:cookie的生命周期当浏览器关闭的时候就消亡了,cookie的生命周期是累计的,从创建时就开始计时,30min后cookie生命周期结束。
session:session的生命周期是间隔的,从创建时开始计时如在30min内没有访问session,那么session生命周期就被销毁。
 
4、存储位置不同
cookie:cookie数据保存在客户端。
session:session数据保存在服务器端。
 
5、数据类型不同
两者都是key-value结构,但针对value的类型是有差异的。
cookie:value只能是字符串类型。
session:value是object类型。
 
6、安全性不同
cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session。
 
参考地址:
https://blog.csdn.net/qq_55894557/article/details/124135293
https://worktile.com/kb/ask/28045.html
发布时间 : 2023-03-01,阅读量:1117
本文链接:https://upwqy.com/details/372.html
设计模式:单例模式 php 面向对象