会话保持是什么
会话保持技术是一种在网络应用中,用于跟踪用户在一段时间内的交互会话状态的方法。通过会话保持技术,网站可以在用户与服务器之间的多次请求和响应中保持一致的会话信息,使用户能够在登录状态下持续地浏览和与网站进行交互,而不需要在每次请求时重新进行身份验证。
会话保持实现方式:
Cookie&&Session:
- 使用Cookie是最常见的会话保持技术。当用户首次访问网站时,服务器会在响应中设置一个会话Cookie,并在用户浏览器中存储一个唯一的会话标识(通常是一个加密的字符串)。
- 在随后的每个请求中,浏览器都会自动将该会话Cookie包含在请求头中,使得服务器能够识别并与用户的会话进行关联。
- 会话Cookie通常具有过期时间,这样一旦用户关闭浏览器,会话Cookie就会失效,会话数据也会被清除,从而保护用户的隐私。
会话保持中服务器传输Session ID的过程可以通过Cookie来描述,因为Cookie是最常见的会话保持机制。以下介绍Cookie和Session
Cookie
什么是Cookie
当你在浏览网页、登录社交媒体、购物网站,甚至使用各种在线服务时,你可能会遇到一个名为 “cookie” 的东西。那么,为什么需要这个 “cookie” ,什么是"cookie"?用简单的话来解释,“cookie” 就像是网站和你之间的一张小便条,它记录了一些信息,以便在你后续的访问中提供更好的体验。
想象一下你在购物网站上购物的情景。当你把商品添加到购物车时,网站需要知道哪些商品是属于你的,以及你的购物车里有什么。这就是 “cookie” 的用处之一。当你点击 “添加到购物车” 时,网站会在你的计算机上留下一个小 “cookie”,上面记录了你选购的商品信息。下次你再次访问该网站时,它可以读取这个 “cookie”,就像是在你的购物清单上勾选了一样,知道你之前选择的商品。
除了购物网站,“cookie” 还可以用于其他场景。例如,当你登录社交媒体时,网站会为你创建一个 “cookie”,以便在你浏览不同页面时保持你的登录状态。这样,你不必每次都重新登录。或者,如果你访问一个需要记住你喜好的网站,“cookie” 可以帮助它记住你的喜好,以便向你推荐更符合你兴趣的内容。
Cookie 的工作原理
1. 创建 Cookie: 当你访问一个网站时,服务器会将一些信息存储在你的计算机上,这就是 “cookie”。服务器通过 HTTP 响应的头部将 “cookie” 发送给你的浏览器。这个 “cookie” 包含了一些信息,比如标识符、值和过期时间。
2. 存储在浏览器中: 一旦浏览器接收到 “cookie”,它会将这些信息存储在你的计算机上,通常是在一个叫做 “cookie 存储” 的地方。每个 “cookie” 都有一个名称和与之关联的值。
3. 发送 Cookie: 当你再次访问同一个网站或者浏览网站上的不同页面时,浏览器会在每个请求中自动将相应的 “cookie” 发送回服务器。这帮助服务器识别你,了解你之前的行为和选择。
4. 服务器响应: 服务器在接收到请求时,可以读取发送过来的 “cookie”,根据其中的信息来处理请求。例如,如果你在购物网站上添加了商品到购物车,服务器可以读取购物车的 “cookie”,然后显示相应的内容。
5. Cookie 的生命周期: 每个 “cookie” 都可以设置过期时间。一些 “cookie” 在你关闭浏览器后就会过期,而另一些可能会持续更长的时间。一旦 “cookie” 过期,浏览器会自动将其删除,服务器将不再能够访问相关信息。
Session
session是什么
session是一种在网络应用程序中维护用户状态的机制。简单地说就是服务端和客户端之间的一次会话或对话。它通过一个Id来区分不同的客户端,在这个过程中可以保存特定用户的信息或状态。会话允许网站在用户访问期间跟踪和存储信息,以便为用户提供连续的体验,而不需要在每个请求中重复验证用户身份或重新输入信息。
会话的工作原理
-
客户端发送请求:
- 用户在浏览器中输入网址或点击链接,向服务器发送HTTP请求。
- 请求中不包含Session ID,因为用户还没有与服务器建立会话。
-
服务器生成Session ID:
- 当服务器接收到请求时,它会检查请求中是否包含一个有效的Session ID。
- 如果请求中没有Session ID,服务器会生成一个唯一的Session ID,通常是一个长随机字符串或使用加密算法生成的。
-
服务器设置Cookie:
- 服务器在HTTP响应头中设置一个名为"Set-Cookie"的字段,将生成的Session ID作为值,同时指定Cookie的过期时间和其他属性(如域名和路径)。
- 这样,服务器会将Session ID以Cookie的形式发送给客户端浏览器。
-
浏览器保存Cookie:
- 客户端浏览器接收到服务器响应,并解析其中的"Set-Cookie"字段。
- 浏览器将Cookie中的Session ID保存在本地,通常存储在一个名为"Cookie"的文件中。
-
客户端发送带有Cookie的请求:
- 在随后的每个请求中,浏览器会自动将Cookie中保存的Session ID包含在请求头中。
- 这样,每次向服务器发送请求时,服务器都可以通过Session ID来识别客户端,并关联请求与特定的会话。
-
服务器验证Session ID:
- 当服务器接收到带有Cookie的请求时,它会从请求头中提取Session ID。
- 服务器会查找存储在服务器端的会话数据,并根据Session ID来关联请求与相应的会话。
-
处理会话数据:
- 服务器使用Session ID确定客户端的会话,然后将请求与特定会话中的数据关联。
- 在会话中,服务器可以存储和更新用户的状态信息、登录信息、购物车内容等数据。
这样,通过Cookie传递Session ID,服务器能够在不同的请求之间保持会话状态,从而实现会话保持的功能。需要注意的是,为了确保安全性,Session ID通常会被加密或使用安全标志(Secure)来确保只有在安全的HTTPS连接下才能传输。# cookie和session是如何配合的
举个例子:
-
用户第一次访问网站,服务器端生成一个session id,例如abcdefg,并将这个id存入到服务器的内存session中。
-
服务器同时在HTTP响应头中附带一个cookie,将这个session id发送给浏览器,指示浏览器存入cookie。
-
当浏览器下次访问网站时,会在HTTP请求头中携带这个存有session id的cookie,发送给服务器。
-
服务器收到请求后,会从请求头的cookie中取出session id,然后根据这个session id去内存session中查找对应的用户信息。
-
如果找到了对应的session数据,说明这个用户已登录过,服务器可以使用内存中的用户数据继续为该用户响应请求。
-
如果根据session id没有找到对应的用户数据,说明这是一个新用户,服务器需要重新为其创建一个session。
这样通过cookie存储session id,可以让服务器知道这一次请求是来自哪个已登录的用户,从而继续上次的会话状态。
Cookie保存用户信息,Session保存用户会话信息。两者互相配合,用于在不登录的情况下识别用户身份,维护用户的连续性访问。
cookie和session的常见用途
- 记住用户登录状态
这是最常见的用途。当用户登录成功后,服务器生成一个session并存入用户信息,同时设置一个session id到cookie中。这个cookie会在后续请求中发送给服务器,服务器就可以根据session id 找到用户信息,来判断用户登录状态。
- 购物车
添加商品到购物车的时候,会把商品id和数量存入session。这样在同一浏览器不同页面可以访问同一个购物车。
- 保存用户偏好设置
例如网页字体、背景色等个性化设置,可以存在session中,用于用户自定义。
- 浏览器行为跟踪
通过cookie或者session可以跟踪并分析用户的网页浏览 activit
- 防止重复提交表单
当用户提交一个表单后,通过设置token在session中,然后表单里添加这个token。这样可以防止重复提交。
所以,cookie和session都是用来记录客户端状态,但cookie数据存在客户端,session存在服务器端。两者互相配合,用于识别用户,保存用户数据,提供更好的用户体验。