session和cookie的工作原理

Cookie和Session用于保持HTTP连接状态的技术。

Cookie是通过客户端保持状态的解决方案。从定义上来说,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header);当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,对于Windows操作系统而言,我们可以从:[系统盘]:\Documents and Settings\[用户名]\Cookies目录中找到存储的Cookie;自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次发回至服务器。而这次,Cookie信息则存放在HTTP请求头(Request Header)了。

 有了Cookie这样的技术实现,服务器在接收到来自客户端浏览器的请求之后,就能够通过分析存放于请求头的Cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容。通常,我们可以从很多网站的登录界面中看到“请记住我”这样的选项,如果你勾选了它之后再登录,那么在下一次访问该网站的时候就不需要进行重复而繁琐的登录动作了,而这个功能就是通过Cookie实现的。

与Cookie相对的一个解决方案是Session,它是通过服务器来保持状态的。由于Session这个词汇包含的语义很多,因此需要在这里明确一下Session的含义。首先,我们通常都会把Session翻译成会话,因此我们可以把客户端浏览器与服务器之间一系列交互的动作称为一个Session。从这个语义出发,我们会提到Session持续的时间,会提到在Session过程中进行了什么操作等等;其次,Session指的是服务器端为客户端所开辟的存储空间,在其中保存的信息就是用于保持状态。从这个语义出发,我们则会提到往Session中存放什么内容,如何根据键值从Session中获取匹配的内容等。

要使用Session,第一步当然是创建Session了。那么Session在何时创建呢?当然还是在服务器端程序运行的过程中创建的,不同语言实现的应用程序有不同创建Session的方法,而在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而再次使用之。正式这样一个过程,用户的状态也就得以保持了

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CookieSession都是用来在Web应用中跟踪用户身份和状态的机制,但它们的工作原理有所不同。 1. Cookie工作原理: 当用户访问一个网站时,服务器会在响应中包含一个名为"Set-Cookie"的HTTP头部,其中包含了一些信息,如用户ID、登录状态等。浏览器接收到这个Cookie后,会将其存储在本地,下次用户再访问该网站时,浏览器会自动将Cookie发送到服务器。服务器根据Cookie中的信息来识别用户身份和状态。 2. Session工作原理Session是基于服务器端的机制。当用户首次访问网站时,服务器会为该用户创建一个唯一的Session ID,并将该ID存储在服务器端的内存或数据库中。同时,服务器会将该Session ID发送给浏览器,通常通过一个名为"sessionid"的Cookie。浏览器在后续的请求中会自动携带该Cookie。服务器通过Session ID来查找对应的用户状态和数据。 具体的流程如下: - 用户访问网站时,服务器检查请求中是否包含有效的Session ID。 - 如果没有有效的Session ID,则创建一个新的Session,并生成一个唯一的Session ID。 - 服务器将该Session ID发送给浏览器,并在响应中设置一个名为"sessionid"的Cookie。 - 浏览器接收到Cookie后,存储在本地。 - 在后续的请求中,浏览器会自动将该Cookie发送给服务器。 - 服务器根据Session ID查找对应的Session,并根据需要更新Session的状态和数据。 需要注意的是,Cookie存储在客户端,可以被用户修改或删除;而Session存储在服务器端,对用户是不可见的。此外,为了保护用户数据的安全性,通常会对CookieSession进行加密和签名处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值