专栏首页FREE SOLO2019Java面试题:谈谈对Cookie和Session区别的理解

2019Java面试题:谈谈对Cookie和Session区别的理解

为什么要有cookie/session?

在客户端浏览器向服务器发送请求,服务器做出响应之后,二者便会断开连接(一次会话结束)。那么下次用户再来请求服务器,服务器没有任何办法去识别此用户是谁。

有了cookie可以向服务器证明用户身份了,我们的web系统中是不是需要将用户的详细信息储存在某个位置供页面调用呢?用户的详细信息就包括姓名,年龄,性别等信息。而cookie是存在于客户端的,将用户详细信息通过网络发送到客户端保存是极不安全的。且cookie大小不能超过4k,不能支持中文。这就限制cookie不能满足存储用户信息的需求。这就需要一种机制在服务器端的某个域中存储一些数据,这个域就是session。

总而言之,cookie/session的出现就是为了解决http协议无状态的弊端,为了让客户端和服务端建立长久联系而出现的。

什么是会话技术?

帮你存储一些在交互过程临时产生的数据。

当你打开浏览器,访问一个网站,认为会话开始了,当你关闭浏览器的时候,会话结束了。

cookie/session执行流程(这才是重点)

cookie执行流程

当你去访问应用的时候,来到服务器。服务器设置一个cookie(后边介绍api),在做响应的时候会通过set-cookie响应头将cookie带给浏览器。

来到浏览器,浏览器会将此数据保存起来,接下来再次去访问服务器的时候,浏览器会根据cookie的path属性(后边api介绍)将这些数据带回去(设置了一个叫做cookie的请求头),来到服务器,服务器有对应的api获取这些值,有了值就知道用户是谁了。

session执行流程

浏览器发起一个请求到服务器,服务器先检查你是否携带了一个叫做JSESSIONID的cookie。

如果有携带,会将此cookie的值取出来(比如为aaa123),然后从服务器的session池中找到ID为aaa123的session返回给调用者。

如果没有携带这个JSESSIONID的cookie,那么服务器将会自动创建一个session对象并且生成一个随机字符串(如aaa123)作为此session的ID保存到session池中。在服务器为客户端浏览器作响应的时候自动创建一个键为“JSESSIONID” 值为“aaa123”的cookie对象让浏览器储存起来以便下次再访问的时候带过来。

cookie/session的区别与联系

区别:

1、Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端。 2、Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关。cookie只能存放4k的数据,而session理论上没有做限制 3、Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击。 4、Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。

联系:

session虽说存放在服务器端,但是仔细看刚才的执行流程你会明白,session是依赖于cookie的。

试用情况:

将登陆信息等重要信息存放为SESSION; 其他信息如果需要保留,可以放在COOKIE中,比如购物车。购物车最好使用cookie,但是cookie是可以在客户端禁用的,这时候我们要使用cookie+数据库的方式实现,当从cookie中不能取出数据时,就从数据库获取。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • session与cookie的区别

    (4)设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话。

    葆宁
  • Java中最常见的5种Web服务器

    目前最为流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型、轻量级的支持JSP和Servlet 技术的Web服务器,也是...

    葆宁
  • Workshop 1:

    Workshop1涉及到的主题: 二进制 十六进制 “与”操作 1:二进制数学 作为了解网络是如何工作的,你需要对二进制算法有很好的理解。这是为什么呢...

    葆宁
  • 【HTTP】浅谈Cookie与Session那些事

    这时候,我们就需要通过cookie来对用户的身份进行标识了,用户每次对服务器发起请求时,都带上自己独有的cookie,服务器通过读取cookie信息,识别用户。

    一名白帽的成长史
  • 各浏览器Cookie大小、个数限制

    一、浏览器允许每个域名所包含的cookie数:   Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也...

    小柒2012
  • 很全很全的 前端 本地存储方式讲解

    程序员宝库关注即可习得新技能! cookie前言 网络早期最大的问题之一是如何管理状态。简而言之,服务器无法知道两个请求是否来自同一个浏览器。当时最简单的方法是...

    企鹅号小编
  • Cookie 和 Session 的使用简记

    http://mertensming.github.io/2016/10/19/cookie-session/

    bear_fish
  • 不惧面试:HTTP协议(3) - Cookie

    悟空聊架构
  • 不惧面试:HTTP协议(3) - Cookie

    悟空聊架构
  • selenium webdriver 如何添加cookie

    从中可以看出add_cookie()这个函数有一个参数cookie_dict,它是以字典的形式传入的,字典中必选的键是"name"和"value",可选的键是"...

    forxtz

扫码关注云+社区

领取腾讯云代金券