Cookie和Session的关系和区别

Cookie和Session的关系和区别

4.请简述Cookie和Session的区别

4.1什么是Cookie

  • HTTP是无状态协议,他不能以状态来区分和管理请求和响应。也就是说服务器但从网络连接上无从知道客户身份。所以服务端给每个客户端都颁发一个通行证,每个人在访问服务器时都必须携带自己的通行证。这样服务器就能从通行证上确认客户身份,这就是Cookie的工作原理
  • Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,实际上Cookie是服务器在本地机器上存储的一小段文本,每次请求客户端都会把这段文本发送给服务器
  • Cookie技术通过请求和响应报文中写入Cookie信息来控制客户端的状态
  • Cookie会根据响应报文里的一个叫Set-Cookie的部首字段信息,通知客户端保存Cookie。当客户端再向服务器发送请求时,客户端会自动在请求报文中加入Cookie值之后发送出去
  • 之后服务端发现客户端发送的Cookie后,会检查是哪个客户端发送的请求,然后对比服务器上的记录,得到之前的状态
  • 首先客户端向服务器发送请求,服务器会通知客户端保存Cookie,与此同时服务器也知道了这个Cookie是向哪个用户发送的(以此来辨别客户端)。当客户端再次向服务器发送请求的时候会在请求报文中加入服务器让他保存的Cookie值,一起发送给服务器,服务器发现客户端发送的cookie就会检查是哪个用户发送的请求,对比服务器的记录得到之前该客户端的状态

4.2什么是Session

  • 服务端执行Session机制的时候会生成session的id值,这个id值会发送给客户端
  • 客户端每次请求都会把这个id值放到http请求的头部发送给服务端,而这个id值在客户端会保存下来,保存的容器就是cookie
  • 因此在我们完全禁掉浏览器Cookie的时候,服务端的session也会不能正常使用
  • 必须注意的是session不一定必须使用cookie,这也是session相对于cookie的高明之处。当客户端的cooKie被禁掉或出问题的时候,PHP会自动把Session ID附着在URL中,这样再通过Session ID就可以跨网页使用Session变量了
  • 服务器会生成session并发送给服务端一个对应的id值,当客户端再次向服务器发送请求时,会把这个id值放在请求头中发给服务器,这样服务器就可以根据客户端发给他的id来分辨客户端
  • 相对的,cookie就需要客户端来保存,在客户端向服务端发请求的时候把这段cookie在请求报文中发送给服务器,服务器根据这段信息分得到用户之前的状态
  1. Session比Cookie安全,Session存储在服务器端,Cookie存储在客户端
  2. cookie数据存放在客户的浏览器(客户端)上,session数据放在服务器上,但是服务端的session的实现对客户端的cookie有依赖关系
  3. cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session;
  4. session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器的性能。考虑到减轻服务器性能方面应该使用cookie
  5. 单个cookie在客户端限制是3k,就是说一个站点在客户端存放的cookie不能超过3k

posted @
2022-09-26 20:46 何以媛起

阅读(
37

) 评论(
) 编辑

Original: https://www.cnblogs.com/heyiyuanqi/p/16732407.html
Author: 何以媛起
Title: Cookie和Session的关系和区别

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611276/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球