当前位置: 首页 > news >正文

HTTP-Cookie和Session

一.Cookie

        1.什么是Cookie

                Cookie是存储在用户浏览器中的一小段数据,由网站创建,用来保存用户的一些信息,比如登录状态、偏好设置、购物车内容等。

        2.为什么需要Cookie

                HTTP协议自身是属于“无状态”协议,无状态是只默认情况下HTTP协议的客户端和服务器之间的这次通信,和下次通信之间没有之间的联系。

                每次请求都是独立的,互补关联的,服务器不会自动保存任何“历史记录”。

                当第一次访问一个网页,服务器在处理完后就会“忘记你是谁”,等到第二次访问的时候,服务器当你是“新来的”。

                但是在实际的开发中,很多时候是不希望这样的。

                此时就需要才请求的时候额外提供一些信息,比如Cookie。

                此时将这些信息保存在哪里成了一个问题,最容易想到的就是将这些信息保存在本地文件中,但是这个行为是不可行的,浏览器为了安全,禁止网页直接访问电脑的本地文件系统,此时网页代码也就无法直接使用本地文件来存储信息了。

                此时为了既可以保证安全性,又可以进行存储数据,浏览器引入了Cookie,这种方式也是按照硬盘文件的方式来保存的,但是浏览器将操作文件给封装了,网页只能往Cookie中存储。

        3.Cookie的工作流程

                服务创建Cookie:

                        当用户首次访问网址时,服务器会通过响应头中的Set-Cookie字段向浏览器发送一个Cookie。

                浏览器保存Cookie:                         

                浏览器携带Cookie请求:

                        用户再次访问同一个网站时,浏览器会在请求头中携带Cookie给服务器 。

                        此时如果将Cookie删除之间访问,图书列表页面,会被登入拦截的: 

        4.Cookie的局限性 

                大小限制:通常每个Cookie不超过4kb。

                数量限制:每个域名最多能存储大约20-50个Cookie。

                安全性较弱:明文存储,容易被窃取(特别是未设置HttpOnly,Secure)。

                不能跨域共享:一个域的Cookie不能被另一个域访问。

二.Session

        1.什么是会话        

                在计算机领域中,会话是一个客户端和服务器之间不中断的请求响应,对客户端的每个请求,服务器能够识别出请求来自于那个客户端。当一个未知的客户端向Web应用程序发送第一个请求时就创建了一个会话。当客户端明确结束会话或服务器在一个时限内没有接收到客户的任何请求时,会话就结束了。                       

        2.什么是Session

                服务器在同一时刻收到的请求是很多的。服务器需要清楚的区分每个请求是属于那个客户端的,也就是属于那个会话的,此时就需要在服务器这边记录每个会话以及于客户端的的信息的对应关系。

                Session是服务器为了保存用户信息而创建的一个特殊的对象。

                Cookie可以被理解为,如果没有Cookie,学生就好比没有学生证,每次在进入小梦的时候都会被拦截,Cookie就像学生手里的学生证一样,标识这这个学生是这个学校的学生。

                而Session就让保安记住学生的信息,每次学生出示了学生证保安就可以知道这个学生是这个学校的学生,就会放学生进去。

                Session的本质就是一个“哈希表”,存储了一些键值对结构,Key就是SessionID,Value就是用户信息(用户信息可以根据需求灵活设计)。

                当服务器生成了唯一的SessionID后会,让将这个唯一的Key发送给浏览器,让浏览器保存到Cookie中, 也就说明了Cookie中还保存着客户端的其他信息。

        3.Session的工作流程

            当用户第一次访问服务器的时候,服务器会创建一个Session(保存在内存或数据库中,默认是保存在内存中的,如果重启服务器是会丢失的),然后服务器会生成一个唯一的SessionID,并通过Set-Cookie发送给浏览器。

                浏览器保存这个SessionID。

                用户后续每次请求,浏览器会自动携带该SessionID。

                服务器通过SessionID找到对应的Session对象,获取用户状态。 

三.Cookie和Session的区别 

        1.Cookie是客户端保存用户信息的一种机制。Session是服务器端保存用户信息的一种机制。

        2.Cookie和Session之间主要是通过SessionID关联起来的,SessionID是Cookie和Session之间的桥梁。

        3.Cookie和Session经常会一起搭配使用,但不是必须配合的。

                完全可以用Cookie来保存一些数据在客户端。这些数据不一定是用户身份信息,也不一定是SessionID。

                Session中的SessionID也不需要非得通过Cookie/Set-Cookie传递,通过URL传递也可以。

 

    

http://www.lqws.cn/news/535753.html

相关文章:

  • 算法第48天|单调栈:42. 接雨水、84.柱状图中最大的矩形
  • 鸿蒙边缘智能计算架构实战:从环境部署到分布式推理全流程
  • window显示驱动开发—DirectX 图形内核子系统(一)
  • 树莓派超全系列教程文档--(67)rpicam-apps可用选项介绍之检测选项
  • 算法-最大子数组
  • 【Python】For
  • Agentic AI爆发前夜,合作伙伴如何把握时代机遇?
  • 2D写实交互数字人如何重塑服务体验?
  • MP1652GTF-Z:MPS高效3A降压转换器 工业5G通信专用
  • windows内核句柄判断有效
  • LeetCode刷题-top100(和为 K 的子数组)
  • ISP Pipeline(4): Anti Aliasing Noise Filter 抗锯齿与降噪滤波器
  • 【thinkphp5】Session和Cache记录微信accesstoken
  • QT实现一个三轴位移台的控制界面
  • QT Creator构建失败:-1: error: Unknown module(s) in QT: serialport
  • 【CMake基础入门教程】第七课:查找并使用第三方库(以 find_package() 为核心)
  • 【缓存技术】深入分析如果使用好缓存及注意事项
  • Flux.create
  • Linux 内核 TCP 的核心引擎:tcp_input.c 与 tcp_output.c 的协同之道
  • ubuntu安装docker遇到权限问题
  • TCP 重传机制详解:原理、变体与故障排查应用
  • 利用python和libredwg库解析dwg格式文件输出GeoJSON
  • Mac电脑如何搭建基于java后端的开发的各种工具服务
  • 自动获取文件的内存大小怎么设置?批量获取文件名和内存大小到Excel中的方法
  • IDEA下载不了插件了怎么办?从本地导入插件详细教程!
  • ubuntu 远程桌面 xrdp + frp
  • 【工具推荐】WaybackLister——发现潜在目录列表
  • OpenBayes 一周速览丨Nanonets-OCR-s深度语义理解,精准结构化转换;HLE人类问题推理基准上线,含2.5k题目,助力封闭式评估体系构建
  • 环境太多?不好管理怎么办?TakMll 工具帮你快速切换和管理多语言、多版本情况下的版本切换。
  • 基于SpringBoot和Leaflet的区域冲突可视化-以伊以冲突为例