三次学习ssession和cookie

本文深入探讨了Session与Cookie的工作原理及应用方式。Cookie分为临时性和持久性两种,可存放于内存或硬盘上。Session则存储在服务器端,通过SessionID进行用户识别。文章详细解析了Session的创建、返回、存放、使用及销毁过程。

        关于session和cookie的博客自己已经能出一个系列了,从最初的概念了解到实例应用了解,虽让有数量但是质量总是不让人满意。即使在项目中使用过但是还是觉得不够清楚,这次再DRP的学习中老师的讲解让自己听着很过瘾,所以又来一篇。

Cookie

        Cookie分为两种:一种是临时性的,内容都是暂存在内存中的,浏览器关闭内容释放。另一种是经设置cookie的时长后以txt形式存放在计算机物理空间的。

 

在java中可以通过以下的代码实现,设置时长的cookie产生的文本在到时长后就会销毁。

 

Session:

 

        1、创建:①用户方法服务器,在服务端创建session空间;②同时创建sessionid(不同的用户是通过sessionid来识别自己的session的)。

        2、返回:在服务端处理完毕后将结果以response返回,带着sessionid

        3、 存放:将sessionid存放在浏览器的cookie中,以内存的形式存放在浏览器中,是临时的

        4、使用:再次使用时客户端发送请求时会带着sessionid找到资源

        5、浏览器关闭,cookie释放session空间在规定时间后被释放

 

小结:

        1、  cookie本地的可以是临时放在内存中的,也可以是放在屋里空间的。

        2、  session放在服务器上的,通过sessionid来进行识别不同用户的session。

        3、  session的sessionid是以临时的形式存放在cookie中的。

<think>嗯,用户想了解SessionCookie的工作原理,还希望有图解说明。首先,我需要回顾一下相关知识,确保自己理解正确。根据引用资料,CookieSession都是用来跟踪用户会话的机制。Cookie存储在客户端,而Session存储在服务器端。用户提到淘宝的例子,登录后保持状态,这应该涉及到Session ID通过Cookie传递。 首先,应该分步骤解释流程。用户第一次访问时,服务器创建Session并生成Session ID,然后通过Set-Cookie头将ID发送给浏览器。浏览器后续请求会自动携带这个Cookie,服务器根据Session ID找到对应的Session数据。这样用户状态就被保持了。 需要检查引用的内容,确保准确。比如引用[4]提到Cookie数据存在客户端,Session在服务器,这点很重要。引用[2]说明了Session ID通过Cookie传输,如果Cookie过期时间没设置,浏览器关闭后Session ID丢失,也就是会话结束。 用户想要图解,虽然不能实际画图,但可以用文字描述图解的结构。例如,客户端服务器之间的请求响应流程,标注Set-CookieCookie头部,以及Session存储的位置。 还要注意区别安全性,如引用[4]指出Cookie可能被分析,不够安全,而Session存在服务器更安全,但占用资源。这些点需要在回答中提到,帮助用户全面理解。 另外,用户的问题可能隐含他们想了解如何实现自动登录,或者安全性问题,所以生成的相关问题可以涉及这些方面,比如Session的生命周期管理,如何防止Session劫持等。 最后,确保回答结构清晰,分步骤说明,结合引用中的关键点,比如Session ID的传递、存储位置的区别,以及实际应用中的例子如淘宝自动登录。</think>### SessionCookie工作原理图解教程 #### 一、核心流程解析(附文字图解) 1. **用户首次访问** - 客户端发送请求到服务器(例如登录淘宝) - 服务器创建唯一的`Session ID`,并将用户数据(如登录状态)存储在服务器的`Session存储区` - 服务器通过响应头`Set-Cookie`将`Session ID`返回给浏览器[^2][^3] ```text ┌─────────┐ 请求 ┌─────────┐ │ 浏览器 │ --------------------> │ 服务器 │ │ │ <-------------------- │ │ └─────────┘ 响应头(Set-Cookie) └─────────┘ ``` 2. **浏览器存储Cookie** - 浏览器将`Session ID`保存为本地Cookie文件(默认内存存储,关闭浏览器则失效;若设置过期时间则持久化存储)[^2][^4] ```text 浏览器Cookie文件示例: ┌───────────────────────┐ │ domain: taobao.com │ │ name: SESSION_ID │ │ value: a1b2c3d4 │ └───────────────────────┘ ``` 3. **后续请求自动携带Cookie** - 浏览器每次访问相同域名时,自动通过请求头`Cookie`发送`Session ID`[^5] - 服务器通过`Session ID`查找对应的用户会话数据 ```text ┌─────────┐ 请求头(Cookie) ┌─────────┐ │ 浏览器 │ ----------------> │ 服务器 │ │ │ <---------------- │ │ └─────────┘ 响应数据 └─────────┘ ``` #### 二、关键特性对比 | | Cookie | Session | |----------|----------------------------|-----------------------------| | 存储位置 | 客户端浏览器 | 服务器内存/数据库[^4] | | 安全性 | 可能被篡改(需加密处理) | 服务器端控制更安全[^4] | | 生命周期 | 可设置过期时间 | 默认随浏览器关闭失效[^2] | | 存储限制 | 单个域名最多4KB[^4] | 仅受服务器资源限制 | #### 三、安全增强措施 1. **Cookie安全标记** - 使用`HttpOnly`防止XSS攻击 - 添加`Secure`标记强制HTTPS传输 ```python # Flask示例:设置安全Cookie response.set_cookie('session_id', value='a1b2c3d4', httponly=True, secure=True, samesite='Lax') ``` 2. **Session保护机制** - 定期更换Session ID(会话固定攻击防护) - 绑定用户IP/User-Agent特征[^3] #### 四、典型应用场景 1. **登录状态保持**(如淘宝自动登录) 2. **购物车数据暂存** 3. **多步骤表单数据暂存**
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值