“cookie”和“session”做一些简单的小总结

优采云 发布时间: 2021-06-09 03:47

  

“cookie”和“session”做一些简单的小总结

  

  今天就“cookie”和“session”做一个简单的总结,帮助我们更好地与产品设计的开发兄弟们交流。

  Cookie 和 session 是 Internet-session(用户-客户端交互)跟踪技术中使用的一项基本技术,用于跟踪用户的整个会话。简单的说,cookie是在客户端通过记录信息来确定用户的身份,而session是在服务器端通过记录信息来确定用户的身份。

  Cookie 定义

  Cookie 是服务器发送给客户端的小型纯文本文件。客户端向服务器请求,如果服务器需要记录用户的状态,它会向客户端浏览器发送一个cookie。客户端浏览器将保存 cookie。当浏览器再次请求网站时,浏览器将请求的URL和cookie一起提交给服务器。服务器检查 cookie 以识别用户的状态。

  Cookie 机制

  cookie的生成(java代码示例):

  Cookiecookie = new Cookie("key","value");

  cookie.setMaxAge(60); //设置cookie生存期为60秒

  cookie.setPath("/test");//设置cookie路径

  cookie 会被附加到请求资源的 HTTP 请求头中并发送给服务器,服务器会通过相应的方法获取 cookie。

  Cookie 属性

  cookie 的主要属性包括:名称、值、过期时间、路径和域:

  应用场景判断注册用户是否已经登录网站:下次输入这个网站时可能会提示用户是否保留用户信息,以简化登录流程。根据用户的爱好自定义内容:网站 创建收录用户浏览内容的 cookie。当用户下次访问时,网站会根据用户的情况调整显示的内容,把用户感兴趣的内容放在最前面。实现永久登录:如果用户在家里的电脑上在线,登录时可以记住自己的登录信息,下次访问时不需要再次登录,直接访问即可。实现自动登录:当用户注册网站时,会收到一个带有唯一用户ID的cookie。当用户再次连接时,会自动返回用户ID,服务器会检查它是否是注册用户并选择自动登录,这样用户就可以访问服务器上的资源,而无需给出明确的用户名和密码。使用cookies记录每个用户的访问次数:获取cookie数组中cookie的值,专门用于统计用户访问次数,值加1,输出最新的cookie。使用 cookie 来记住用户名和用户密码。用户勾选“自动登录”,将用户名和密码信息放入cookie中。同时可以设置有效期。使用cookies实现新手礼包等弹窗功能。同理,将新手礼包弹窗的逻辑写入cookie中,并设置相应的有效期。例如,弹窗在有效期内只弹出一次,在有效期后登录后弹窗再次弹出。会话定义

  Session 是另一种记录客户端状态的机制。区别在于cookie存储在客户端浏览器中,而会话存储在服务器上。当客户端浏览器访问服务器时,服务器以某种形式记录服务器上的客户端信息,这就是会话。当客户端浏览器再次访问时,只需要从会话中找到客户端的状态即可。会话相当于服务器上的程序创建的用户文件。用户访问时,只需要查询用户的文件表即可。

  会话的生命周期和有效期

  服务器为了获得更高的访问速度,一般都会将会话保存在内存中。每个用户将有一个独立的会话。如果会话内容过于复杂,可能会导致大量客户端访问服务器时内存溢出。 session的使用虽然比cookie方便,但是过多的session存储在服务器的内存中,会给服务器带来压力。因此,会话中的信息应尽可能简洁。

  会话在用户第一次访问服务器时自动创建。会话生成后,只要用户继续访问,服务器就会更新会话的最后访问时间,并保持会话。

  随着越来越多的用户访问服务器,将会有越来越多的会话。为防止内存溢出,服务器将从内存中删除长时间未处于活动状态的会话。这个时间是会话的超时时间。如果超时后没有访问服务器,会话将自动失效。

  会话和cookie

  虽然session是存储在服务器上的,但是它的正常运行还是需要客户端浏览器的支持。这是因为会话需要使用 cookie 作为识别标记。 HTTP协议是无状态的,会话无法根据HTTP连接判断是否是同一个客户端。因此,服务器向客户端浏览器发送一个名为 SESSIONID 的 cookie,其值是会话的 id。 Session 根据 cookie 识别是否是同一用户。

  对于不支持 cookie 的移动浏览器,还有一个解决方案:URL 地址重写。 URL地址改写的原理是将用户会话的id信息改写成URL地址,服务器可以解析改写的URL得到会话ID。这样,即使客户端不支持cookies,也可以通过session来记录用户状态。

  应用场景通过会话积累用户数据。比如一个没有登录的用户访问京东网站,此时京东向其发布了一个cookie。如果cookie的名字是abc,那么这条记录就是abc=001,京东后台也会生成一个session id。 ,它的值也是001,客户001在2点、3点、4点的时候在购物车中添加了三件商品,这样后台也记录到购物车中已经有三件商品了session id为001的用户,只要客户端cookie带来的值收录session id,后台就可以显示相应的数据。如果此时在浏览器中清除cookie,cookie数据消失后,后台和客户端无法建立对应关系,购物车数据将失效。单点登录是通过会话实现的。用户帐号登录成功后,在会话过期前,您将无法在其他机器上登录同一帐号。登录后,保存会话中的用户信息。如果此时请求在另一台机器上用同一个账号登录,遍历(遍历的意思是查看所有会话)Web服务器中的所有会话,判断是否收录相同的用户信息,则无法登录另一台机器上的帐户。

  以上是cookie和session的简单总结。你学会了吗?

  作者:流年,互联网产品设计师,4年互联网产品设计经验。

  本文由@流年原创发表,人人网是产品经理。未经许可禁止转载。

  标题图片由作者提供

  奖励作者,鼓励他努力!

  欣赏

  4 人获得奖励

  

  

  

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线