COOKIE和Session的原理及异同

1. cookie的创建和读取

  cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去,这样,web资源处理的就是用户各自的数据。

  服务器在客户端保存用户的信息,比如,登录名,密码等,数据量不大,服务器在需要的时候可以从客户端读取,保存在客户端的浏览器缓存目录下。换一台电脑的浏览器就不能读到了,但如果不同浏览器的cookie文件存放目录是一样的话,使用同一个电脑的不同浏览器仍然可以读到,因为此时浏览器间的cookie是共享的。

1.1 创建cookie

用户使用浏览器访问一个服务器,服务器端就可以创建一个cookie,并且设置它的生命周期,通过response将cookie返回给浏览器。

浏览器会在本地产生临时文件,这个文件中存放的就是cookie内容,使用的是明文(可以加密后保存),所以比较危险,这个临时文件是有存在时间限制。如果cookie重名的话,就会替换掉以前的值。一个站点可以创建多个cookie。

创建cookie:

 

 

1.2 读取cookie

浏览器向某个服务器发送请求的时候,会携带跟这个服务器相关的cookie信息,存在request中,所以服务器可以通过解析request中的内容来获取cookie信息。由于不能通过键值对的键来直接读取,读出来的cookie是个数组,先读取所有信息,再选出需要的信息。

读取cookie:

 

 

1.3 cookie的作用

  1. 保存上次登录时间等信息
  2. 保存用户名、密码,在一定时间内不用重新登录
  3. 记录用户访问网站的喜好(比如有误背景音乐,网页的背景色等)
  4. 网站的个性化,比如定制网站的服务,内容等

2.session原理:

  1、session是保存在服务器端,理论上是没有是没有限制,只要你的内存够大

 
  2、浏览器第一次访问服务器时会创建一个session对象并返回一个JSESSIONID=ID的值,
     创建一个Cookie对象key为JSSIONID,value为ID的值,将这个Cookie写回浏览器
 
  3、浏览器在第二次访问服务器的时候携带Cookie信息JSESSIONID=ID的值,如果该JSESSIONID的session已经销毁,
     那么会重新创建一个新的session再返回一个新的JSESSIONID通过Cookie返回到浏览器
 
  4、针对一个web项目,一个浏览器是共享一个session,就算有两个web项目部署在同一个服务器上,针对两个项目的session是不同的
     如:你在tomcat上同时部署了两个web项目,分别是web1、web2。当你在一个浏览器上同时访问web1时创建的session是A1,访问web2时创建的session是A2。
         后面你再多次访问web1使用的session还是A1,多次访问web2时使用session就是A2
 
  5、session是基于Cookie技术实现,重启浏览器后再次访问原有的连接依然会创建一个新的session,
     因为Cookie在关闭浏览器后就会消失,但是原来服务器的Session还在,只有等到了销毁的时间会自动销毁
 
  6、如果浏览器端禁用了Cookie,那么每次访问都会创建一个新的Session,但是我们可以通过服务器端程序重写URL即可,如果页面多连接多,会增加不必要的工作量,
     那可以强制让你用户开启接收Cookie后再让其访问即可。
 
      当你一次访问服务器的时候,服务器会在内存中开辟一块空间,返回唯一一把打开该空间的钥匙,再把这把钥匙返回到浏览器。
      当你第二次访问的时候浏览器会携带这把钥匙到服务器端打开对应的空间,如果该空间已经销毁又重新返回开辟一块新的空间返回新的钥匙到浏览器。

3.cookie 和session 的区别:

  1、Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端
  2、Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击。
  3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
  考虑到减轻服务器性能方面,应当使用COOKIE。
  4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。Session是没有大小限制和服务器的内存大小有关。

 

4.cookie 和session 的联系:

  session是通过cookie来工作的
  session和cookie之间是通过$_COOKIE['PHPSESSID']来联系的,通过$_COOKIE['PHPSESSID']可以知道session的id,从而获取到其他的信息。

个5.人理解

  关于同一个浏览器访问一个网站,前后登录两个人的账号,会发现,用的是一个session容器,不过sessionid这个属性会被覆盖,所以一个浏览器同一段时间只会存在一个的账号,不可能并行进行两个人的账号。而如果采用不同的浏览器登录两个人账号,那么将各自分配一个sessionid,前者一个浏览器登两个账号可理解成前一个账号的sessionid就被杀死了,或者说值被覆盖了。每个账号在登录网站时,会分配sessionid,与userid会相对应,并且保存到服务器的数据库中,接下来每个sessionid在访问服务器的时候,就会去查找相应的表,显示相对应的用户信息。

  所以cookie和session最大的区别是,客户端技术和服务器端技术,数据存放的位置不一样,技术原理不同,可实现的功能侧重点也不同。

转载于:https://www.cnblogs.com/xjtsh/p/10614376.html

COOKIE和Session的原理及异同相关推荐

  1. 网络:.cookie和session原理及区别

    一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料 ...

  2. Cookie和Session的作用和工作原理

    一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料 ...

  3. 吐血推荐cookie和session

    吐血推荐cookie和session 很多人对于cookie和session一知半解,今天我们就全面透彻的分析一下cookie和session的原理和使用以及注意事项. *写在前面 我们的网页访问都是 ...

  4. Cookie&Session

    Cookie&Session 背景:Cookie和Session的原理.作用及如何设置和相关面试. 一.诞生背景 HTTP是无状态的,即服务器无法知道两个请求是否来自同一个浏览器,也就是服务器 ...

  5. 服务器端会话技术Session|| Session的原理||Session的细节||session的钝化session的活化||session的特点||session与Cookie的区别

    Session 1. 概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中.HttpSession 2. 快速入门:     1. 获取HttpSession对象:   ...

  6. Cookie和Session的作用,区别和各自的应用范围,Session工作原理

    Cookie和Session的作用与区别 Session用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请 ...

  7. cookie和session原理

    session   session_start() 开启session机制,告诉php我想使用session了 列:     $_SESSION['age']='18';     $_SESSION[ ...

  8. cookie和session、web服务工作原理、Apache配置php扩展、php简介

    cookie和session: cookie和session区别:cookie数据是存在本地的,而session数据是存在服务端的,session比cookie更安全. cookie:用于http做会 ...

  9. 计算机网络——cookie、session、token原理

    摘要 HTTP是无状态的Web服务器,一次对话完成后下一次对话完全不知道上一次对话发生了什么,但是随着网络的不断发展,比如电商中的购物车只有记住了用户的身份才能够执行接下来的一系列动作.所以此时就需要 ...

最新文章

  1. NYOJ--811--变态最大值
  2. CentOS 编译 openjdk
  3. WINDOWS基础 ---- 系统目录
  4. mysql主从复制思考_Mysql主从复制(拓展博客文章分享及思考)
  5. SpringMVC执行流程图
  6. 还原哈希密码工具(hash、md5)
  7. Touch 方法属性 映射工具
  8. 函数模板遇上函数重载
  9. 轻量函数式 JavaScript:十、函数式异步
  10. 稳定币usda是哪个发行的_usdt稳定币是谁发行的?
  11. [转] 面向对象软件开发和过程(四)重用
  12. java三大特性面试回答_面试题解3-Java的三大特征
  13. windows7/windows server 2008 r2升级至sp1
  14. idea文件夹代颜色代表的含义
  15. 360企业版退出密码
  16. 关于stylegan3第一次运行编译filtered_lrelu_plugin出错的问题
  17. 《视觉SLAM十四讲 第二版》笔记及课后习题(第二讲)
  18. iOS开发之AVPlayer的精彩使用---网易新闻视频播放界面的另类实现
  19. 重置计算机网络设置路由器,路由器登录不上怎么办 如何重新设置路由器
  20. 关于Ubuntu14.04拼音不能正常使用的解决方案

热门文章

  1. jsf刷新页面_JSF页面生命周期管理
  2. junit junit_JUnit显示名称– @DisplayName
  3. scala 主构造器_Scala主构造器深度
  4. C++的学习(十)类和对象
  5. 设备驱动简介 -- ldd3读书笔记
  6. 行业深度见解•SD-WAN对于企业云的重要性 1
  7. 【云周刊】 第211期:“阿里巴巴小程序繁星计划”:20亿扶持200万小程序开发者和100万商家...
  8. 《Swift 权威指南》——第6章,第6.1节函数的定义和调用
  9. 《Dreamweaver CS6完美网页制作——基础、实例与技巧从入门到精通》——1.2 网页的基本构成元素...
  10. Centos磁盘管理和文件系统管理