python教程

当前位置:首页 > 计算机底层基础 > 当前文章

计算机底层基础

cookie与session是什么?有何关系

2021-11-17 156赞 老董笔记

  一篇文章通常只有1个主题,本文的主题就是理清cookie和session的概念及关系,至于一些关联性内容如http协议,cookie和session的优缺点等不过多解释。

  为什么有cookie和session

  http协议是无状态的,换言之就是没有记性,1个人请求了A页面,然后再请求B页面,服务器是不知道这是同1个人的,服务器只知道这是1次请求。这样就没有办法标记用户,不知道1个用户再网站都干了些什么事。为了解决这个问题,相继诞生了cookie和session。

  cookie是什么,看一个流程

  1、服务器生成一些数据,数据的格式如{'key1':'value1','key2':'value2'},这些数据被成为cookie。

  2、在客户端(浏览器)访问1个站点时,这些数据通过响应头发给浏览器,浏览器可以自动保存这些数据。

  3、浏览器再次请求这个站点的网页时就在请求头里带上这些数据。

  4、服务器可以获取浏览器请求头的数据,通过这些数据就知道哪些请求属于同一个人,即服务器通过cookie数据实现了用户标记!

  细节方面,服务器可以设置设置cookie的有效期(小0或者不设置会存在缓存浏览器关闭就失效,大于0则会存储到硬盘,于0代表立刻失效);服务器可以指定特定url形式设置cookie。综合看下来,服务器生成cookie、发送cookie给浏览器、获取cookie、打印cookie。

  浏览器可以获取cookie、保存cookie、带上cookie去请求,浏览器可以自行设置禁止保留cookie,但是不会影响服务端给发送cookie,但是浏览器禁止cookie后很多站点的一些功能无法使用!

  session是什么

  服务器生成一个session对象,这个对象里包含着1个特别的数据,其格式如{'sessionid':'xxxxxxxxxx'},让这个数据作为cookie的一个内容组成部分通过响应头发给浏览器,下一次浏览器请求站点时再请求头携带上sessionid,服务器就知道这是哪个用户,这个sessionid在站点的一系列行为服务器会记录并且存储到服务器上。这样只根据1个sessionid即可标识用户。

  有了cookie为什么还要有session

  1、安全方面:

  cookie存在客户端不安全,session数据存储在服务端比较安全,sessionid的值是通过一些算法生成的,独一无二。客户端自己伪造1个值但是服务端不认

  2、其他方面

  cookie只能保管ASCII字符串,需要通过编码方式存储Unicode字符或者二进制数据,且存储容量较小。session数据存储在服务器,存储容量大小没有限制,存储的数据类型也没有限制。

感兴趣直接点击图片获取>>

文章评论

cookie与session是什么?有何关系文章写得不错,值得赞赏