【刷题】面筋-网络-Cookie和Session的区别

Cookie和Session

  • cookie:由于HTTP请求是无状态的,它不会认识当前的用户是谁。cookie的出现就为了解决这个问题。用户第一次请求服务器时,服务器会返回一些数据(cookie)给浏览器,浏览器保存到本地,等下一次再请求服务器时就会自动带上本地的cookie数据,服务器拿到这个数据就知道该请求用户是谁了。可是cookie只能存少许数据,不一样浏览器存储大小不一样,但通常不超过4KB。web

  • session:session和cookie的做用相似,都是为了保存用户相关的信息,可是不一样的是:session是保存在服务器上的,cookie保存在本地浏览器。保存在服务器上的session数据不容易被窃取,更加安全,但弊端是占用了服务器的资源。面试

面试:

  • session与cookie的联系

    • Cookie和Session都是会话技术
    • session是须要借助cookie才能正常工做的,若是客户端彻底禁止cookie,session将失效。
  • Cookie和Session的区别

    • 一、Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端。浏览器

    • 二、Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制tomcat

      • 单个cookie保存的数据不能超过4K,不少浏览器都限制一个站点最多保存20个cookie。
      • session是没有大小限制,和服务器的内存大小有关。
    • 三、Cookie有安全隐患,经过拦截或本地文件找获得你的cookie后能够进行攻击。安全

      • 别人能够分析存放在本地的cookie并进行cookie欺骗
      • 考虑到安全应当使用session。
    • 四、Session是保存在服务器端上会存在一段时间才会消失,若是session过多会增长服务器的压力。服务器

      • 考虑到减轻服务器性能压力方面,应当使用cookie。
    • 五、session中保存的是对象,cookie中保存的是字符串。cookie

session原理

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

  • 二、浏览器第一次访问服务器时会建立一个session对象并返回一个JSESSIONID=ID的值,性能

    • 建立一个Cookie对象key为JSSIONID,value为ID的值,将这个Cookie写回浏览器
  • 三、浏览器在第二次访问服务器的时候携带Cookie信息JSESSIONID=ID的值对象

    • 若是该JSESSIONID的session已经销毁,那么会从新建立一个新的session再返回一个新的JSESSIONID经过Cookie返回到浏览器
  • 四、针对一个web项目,一个浏览器是共享一个session,就算有两个web项目部署在同一个服务器上,针对两个项目的session是不一样的

    • 如:你在tomcat上同时部署了两个web项目,分别是web一、web2。当你在一个浏览器上同时访问web1时建立的session是A1,访问web2时建立的session是A2。后面你再屡次访问web1使用的session仍是A1,屡次访问web2时使用session就是A2
  • 五、session是基于Cookie技术实现,重启浏览器后再次访问原有的链接依然会建立一个新的session,

    • 由于Cookie在关闭浏览器后就会消失,可是原来服务器的Session还在,只有等到了销毁的时间会自动销毁
  • 六、若是浏览器端禁用了Cookie,那么每次访问都会建立一个新的Session,可是咱们能够经过服务器端程序重写URL便可,若是页面多链接多,会增长没必要要的工做量,那能够强制让你用户开启接收Cookie后再让其访问便可。

大白话

  • 当你一次访问服务器的时候,服务器会在内存中开辟一块空间,返回惟一一把打开该空间的钥匙,再把这把钥匙返回到浏览器。
  • 当你第二次访问的时候浏览器会携带这把钥匙到服务器端打开对应的空间,若是该空间已经销毁又从新返回开辟一块新的空间返回新的钥匙到浏览器。

END

相关文章
相关标签/搜索