一.Cookie
定义:
是服务器发送到用户浏览器并保存在浏览器上的一小块数据, 它会在浏览器之后向同一服务器再次发起请求时被携带并发送到服务器上。 通常, 它用于告知服务端两个请求是否来自同一浏览器, 如保持用户的登录状态、 记录用户偏好等
注意点:cookie数据块是存储在浏览器上面的,例如下图:
使用原理:
1.当用户在浏览器第一次访问某个服务器时,服务器在响应时会在HTTP头部设置Set-Cookie字段
2.用户的浏览器在接受到响应时,同时也接受到Cookie,并且将其保存在本地文件中
3.在之后的浏览器请求该服务器时,浏览器会自动在HTTP请求头部携带cookie字段,并且将本地Cookie内容发送给服务器
这样就可以做到身份确认了。
Cookie分类:
会话Cookie:在浏览器关闭时失效
持久Cookie:带有明确的过期日期或持续时间,可以跨多个浏览器会话存在
补充说明: 如果 cookie 是一个持久性的 cookie, 那么它其实就是浏览器相关的, 特定目录下的一个文件。 但直接查看这些文件可能会看到乱码或无法读取的内容,
因为 cookie 文件通常以二进制或 sqlite 格式存储。 一般我们查看, 直接在浏览
器对应的选项中直接查看即可如下:
下面我们来讨论一个重要问题:安全性
Cookie是存储在用户端的,如果cookie内容泄漏,那么就会导致用户信息泄露,从而出现重大问题,所以我们引入了session
二.Session
定义:
HTTP Session 是服务器用来跟踪用户与服务器交互期间用户状态的机制。 由于 HTTP
协议是无状态的(每个请求都是独立的) , 因此服务器需要通过 Session 来记住用户
的信息
工作原理:1.当用户通过浏览器初次访问一个服务器时,服务器会在服务器端创建一个Session ID,并且在响应时发送Cookie字段
2.服务器将Seesion ID对应的数据存储在服务器的内存/数据库/缓存中
3.当用户在浏览器再次访问该服务器时会携带Session ID,此时服务器就可以通过该ID来访问对应的用户数据
安全性:
之前我们说cookie存在安全性问题,那么session是如何解决该问题的呢?
session机制中在用户端的cookie还是存在泄露风险,但是要知道此时的cookie文件中并未存储用户的数据信息,只有session ID,虽然可以通过session ID来尝试访问服务器,但是子啊服务端可以通过一些其他检测手段,例如:异地登录需要人脸,手机电脑型号不匹配等,此时就可以大大缓解泄露的风险
以上就是cookie和session的全部内容了,感谢大家的支持!!!