什么是session对象,一分钟搞懂session工作原理

一、诞生背景 HTTP是无状态的,即服务器无法知道两个请求是否来自同一个浏览器,也就是服务器不知道用户上一次做了什么,每次请求都是完全独立的。 早期互联网只是用于简单的浏览文档信息、查看黄页和门户网站等,并没有交互这个概念。但是随着互联网慢慢发展,宽带、服务器等硬件设施得到了很多的提升,互联网允许人们做更多的事情,所以交互式Web(交互式Web即客户端与服务器可以互动,如用户登录、商品购买和论坛等…

一、问世环境

HTTP是无状态的,即服务器没法了解2个请求是不是来源于同一个电脑浏览器,其实就是服务器不清楚用户上一次干了什么,每一次请求全是彻底单独的。

初期互联网技术仅仅用以简单访问文本文档信息、查询企业黄页和门户网等,并没互动这一概念。可是移动互联网渐渐地发展趋势,宽带网络、服务器等硬件条件获得了不少的提高,互联网技术容许大家做更多的事,因此互动式Web(互动式Web即手机客户端与服务器能够互动交流,如用户登陆、产品选购和论谈等)慢慢就掀起了,而HTTP无状态的特征对于此事导致了比较严重阻拦。

因为不可以纪录用户上次的实际操作,伟大程序猿创造了隐藏域用以纪录用户上一次操作信息;根据隐藏域把用户之前操作记录放到form表单的cnput中,那样请求时把提交表单就能知道上一次用户操作了,但这样总是得建立隐藏域且需要取值,既不便也容易出差错;可是隐藏域功效强劲,时迄今日都是有不少人在用来处理一些问题。隐藏域的书写格式如下所示:

<input type=\"hidden\" name=\"field_name\" value=\"value\">

网景公司的卢-蒙特利Lou Montulli,在1994年将Cookies的定义用于通信网络,用以处理用户网络购物的加入购物车历史数据,而且当时最厉害的电脑浏览器都是网景浏览器;随后在网景浏览器的大力支持下其他浏览器也开始逐渐适用Cookie,至今所有浏览器也支持Cookie了。

二、什么叫Cookie

Cookie的问世就是为了处理HTTP无状态的特点,用以达到互动式Web。

图1. Chrome浏览器百度主页Cookies

Cookie和Session的原理、作用及如何设置和相关面试

图2. Firefox浏览器百度主页Cookie

Cookie和Session的原理、作用及如何设置和相关面试

图3. Safari浏览器百度主页Cookie

Cookie和Session的原理、作用及如何设置和相关面试

图中中可以看出在Chrome、Firefox和Safari浏览器中百度主页的Cookie,在表中,每一行都代表了一个Cookie。Cookie是由服务器发送给手机客户端特殊的信息,但这些信息以文本文档的方式储存在手机客户端,随后手机客户端每一次向服务器推送请求时都会携带这种特殊信息,用以服务器纪录手机客户端状态。

Cookie关键应用于下列三个方面:

1、对话状态管理,如用户登录状态、加入购物车、手机游戏成绩或其它必须的记录信息;

2、个性设置,如用户自定设定、主题风格等;

3、电脑浏览器个人行为追踪。

三、Cookie基本原理

Cookie是由服务器传出储存用浏览器特殊的信息,其具体全过程能通过一个用户登陆的事例去了解。

图4. Cookie工作原理

Cookie和Session的原理、作用及如何设置和相关面试

以上如图所示,用户在键入用户名与登陆密码以后,电脑浏览器将用户名与密码发送给服务器,服务器开展认证,验证成功之后将用户信息数据加密后打包封装成Cookie放到请求头中返还给电脑浏览器。

HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: user_cookie=Rg3vHJZnehYLjVg7qi3bZjzg; Expires=Tue, 15 Aug 2019 21:47:38 GMT; Path=/; Domain=.169it.com; HttpOnly

[响应体]

电脑浏览器接到服务器返回数据信息,发觉请求头中有一个:Set-Cookie,随后它就把这个Cookie保攒起来,下一次电脑浏览器再请求服务器时,能把Cookie也一起放到请求头中发送给服务器。

GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: user_cookie=Rg3vHJZnehYLjVg7qi3bZjzg

服务器接到请求后往请求头中取得Cookie,随后分析并获得用户信息,表明此用户已登录,因而Cookie是将数据保存在服务端的。

从以上用户登陆的事例能够得知,用户信息是储存在Cookie中,可能就就相当于储存用浏览器里的,那样用户就可以任意变更用户信息,这是一种不安全的对策。此外,Cookie不论是服务器发给电脑浏览器,或是电脑浏览器发给服务器,全是放到请求头里的。

四、Cookie特性

从上图的Chorme、Firefox和Safari浏览器能够看见一个Cookie有:Name、Value、Domian、Path、Expires/Max-Age、Size、Http(Httponly)和Secure这种特性。

1、Name & Value

Name表示Cookie的名字,服务器就是利用name特性来获得某一Cookie的值。

Value表示Cookie的值,大多数情况下服务器会把那个value当做一个Key去缓存文件中查看储存的信息。

2、Domain & Path

Domian表示能够浏览此Cookie的网站域名,下面的图就以百度贴吧首页的Cookie来了解一下Domain的特性。

图5. Chrome浏览器贴吧首页Cookie’s Domain

Cookie和Session的原理、作用及如何设置和相关面试

图中可以看到,第三列的Domian有:.baidu.com顶级网站域名和.teiba.baidu.com二级域名;所以在这里就有一个浏览标准:一级域名只有设定或浏览一级域名的Cookie,二级以内的网站域名只有浏览或设定本身或是一级域名的Cookie,因此如果想在各个二级域名中分享Cookie的话,只能把Domain的特性设为一级域名。

Path表示能够浏览此Cookie的网页页面途径;如path=/test,那样仅有/test途径下页面能够载入此Cookie。

3、Expire/Max-Age

Expire/Max-Age表示此cookie的超时时间;若设定其值为一个时长,因此当抵达此时间时,此cookie往往会无效;不设得话初始值是Session,含意是cookie会和session一起无效;当浏览器关闭(关掉全部电脑浏览器,而非浏览器标签页)后,此cookie无效。此外,当Cookie的过期时间被设置时,设置的日期与时间只与手机客户端有关,与服务器端不相干。

4、Size

Size表示Cookie的name value的字符数,例如有一个Cookie:id=666,那样Size=2 3=5。2即是name,3即是value,每个电脑浏览器对Cookie的适用都不尽相同,如下图所示:

图6. 各电脑浏览器Cookie鼓励的数量

Cookie和Session的原理、作用及如何设置和相关面试

5、HTTP

HTTP表明cookie的httponly特性;如此特性为true,则只会在http请求头时会含有此cookie的信息,而无法通过document.cookie来浏览此cookie。那么设计方案就是为了提供一个安全防范措施来协助阻拦根据JavaScript发起xss漏洞(XXS)盗取cookie的恶劣行为。

图7. document.cookie

6、Secure

Secure表示是不是只能依靠https来传送此条cookie;不像别的选择项,该选择项只是一个标识而且没有其它的值。

五、Java操作Cookie

1、形成Cookie

Cookie和Session的原理、作用及如何设置和相关面试
 1 package com.ausclouds.bdbsec.auth.cmb;
2
3 import javax.servlet.http.Cookie;
4 import javax.servlet.http.HttpServlet;
5 import javax.servlet.http.HttpServletRequest;
6 import javax.servlet.http.HttpServletResponse;
7
8 public class CookieServlet extends HttpServlet {
9
10 @Override
11 protected void service(HttpServletRequest req, HttpServletResponse resp){
12 //建立Cookie目标
13 Cookie comCookie = new Cookie(\"computer\", \"HP\");
14 //网络服务器把cookie响应给手机客户端,全部的cookie目标,都要在服务端建立,根据http响应给手机客户端(电脑浏览器)
15
16 //如果不设定使用时间,则取不上Cookie的值
17 comCookie.setMaxAge(60*60*24*30);
18
19 //一旦设定了cookie的途径,就只能依靠这一个途径才可以获取到cookie的信息
20 comCookie.setPath(req.getContextPath() \"/getCookie.sxt\");
21
22 //加上cookie
23 resp.addCookie(comCookie);
24
25 }
26 }
Cookie和Session的原理、作用及如何设置和相关面试

2、获取Cookie

Cookie和Session的原理、作用及如何设置和相关面试
 1 package com.ausclouds.bdbsec.auth.cmb;
2
3 import javax.servlet.http.Cookie;
4 import javax.servlet.http.HttpServlet;
5 import javax.servlet.http.HttpServletRequest;
6 import javax.servlet.http.HttpServletResponse;
7
8 public class GetCookieServlet extends HttpServlet {
9
10 @Override
11 protected void service(HttpServletRequest req, HttpServletResponse resp){
12 //获取cookie信息
13 Cookie[] cookies = req.getCookies();
14 for (int i = 0; i<cookies.length; i ){
15 System.out.println(cookies[i].getName() \":\" cookies[i].getValue());
16 }
17 }
18
19 }
Cookie和Session的原理、作用及如何设置和相关面试

3、删掉Cookie

//删掉Cookie的构思便是更换原先的cookie,并设定它预期寿命为0
Cookie cookie = new Cookie(\"Cookie\",null);//cookie名称要同样
cookie.setMaxAge(0); //
cookie.setPath(request.getContextPath()); // 同样途径
response.addCookie(cookie);

六、Session

1、问世环境

实际上设计方案Cookie之时,它不是只是收藏了一个key值,而是通过储存客户的信息,但由于cookie是存有手机客户端的,并且自身储存的尺寸比例也非常有限,最主要的是客户是可见的,而且可以任意地改动,这相当地不安全的。为了能既轻松又方便快捷的载入全局性信息,因此出现了Session这类一个新的储存对话体制。

2、什么叫Session

Session翻译为对话,网络服务器为每一个电脑浏览器创建一个对话目标,电脑浏览器在第一次要求远程服务器,网络服务器就会为该电脑浏览器形成一个Seesion目标,储存在服务器端,并把Session的Id以cookie的方式发给手机客户端电脑浏览器,最后以用户表明完毕或session超中为完毕。

Session工作中原理:

1.当某一客户向服务器发送第一个要求时,网络服务器向其创建一个sesion,并为此session创建一个标识号(sessionID);

2.这一客户接着的所有要求都应该包含这一标识号(sessionID),网络服务器会审校这一标识号以分辨要求属于哪一个session的;

3.sessionID标识号主要有两种控制方式:Cookie和URL重新写过;

4.Cookie是将数据立即储存在手机客户端,而Session是将数据保存在服务器端,因此Session的安全系数更好。

图8. Session工作中原理(根据Cookie完成)

Cookie和Session的原理、作用及如何设置和相关面试

3、Java操作Session

1.建立Session

ActionContext actionContext = ActionContext.getContext();
Map<String, Object> mapSession = actionContext.getSession();
mapSession.put(\"branch\", branch);
mapSession.put(\"permission\", per);

2.JSP获取Session

Cookie和Session的原理、作用及如何设置和相关面试
1 if(session.getAttribute(\"branch\") == null||session.getAttribute(\"permission\") == null)
2 {
3 response.setCharacterEncoding(\"utf-8\");
4 out.print(\"<script>alert(\'您都还没登陆,请登录\') </script>\");
5 out.flush();
6 out.close();
7 }
Cookie和Session的原理、作用及如何设置和相关面试

3.Java后台获取Session

1 ActionContext actionContext = ActionContext.getContext();
2 Map session = actionContext.getSession();
3 String inputUserid =(String)session.get(\"username\");
4 String proving =(String)session.get(\"proving\");

七、招聘面试有关

1、Cookie和Session的关联?

1. 二者都是为完成手机客户端与服务器端互动而提供服务的;

2. Cookie是储存在手机客户端,缺陷易仿冒、不安全的;

3. Session是储存在服务器端,会损耗服务器空间;

4. Session完成主要有两种方式:Cookie和URL重新写过。

2、Cookie带来安全性难题?

1. 对话挟持和XSS:在Web应用中,Cookie常用于标识客户或受权对话。因而,假如Web应使用的Cookie被盗取,可能造成受权客户的对话受到伤害;常见的盗取Cookie的方法有网络钓鱼进攻与应用程序漏洞开展XSS进攻;

2. 跨站恳求仿冒(CSRF):wiki百科早已提出了一个比较好的CSRF事例。当在不安全的在线聊天室或社区论坛里的一张图片,它其实是一个让你金融机构服务器发送取现的请求:

<img src=\"http://bank.example.com/withdraw?account=bob&amount=1000000&for=mallory\">

如果你点击显示该照片时,如果已经早已登陆过你的银行账户而且Cookie并未无效,那么我金融机构上的钱很有可能会被自动转走;处理CSRF的方法有:掩藏域短信验证码、确定机制和设定比较短的Cookie生命期等。

3、Session应用领域?

Session通常是服务端储存,用于叙述一些客户信息或是有关的许多数据信息,也可以是其他类型数据信息,只要是自己的项目觉得可以关联到客户或手机客户端的统计数据都能够放进session中;最基本情景便是储存登陆客户信息。

4、Session生命期?

1、建立:若浏览的第一个网络资源是JSP网页页面,则创建session目标;若浏览的第一个网络资源是Servlet,就需要手动式调用request.getSession()方式来创建session目标;

2、消毁:调用session.invalidate()方式来消毁session()目标,session会话超时默认设置30min。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年9月27日 下午7:15
下一篇 2022年9月27日 下午7:18

相关推荐

  • 伊索无油精华适合什么年龄(一款混油皮必备的精华)

    吐血也要推荐的一款精华,暗沉、痘痘、痘印、油皮必备! 【主要成分】 芦荟:取代水作为基底,保湿、提亮、祛痘印效果杠杠的 茶树、依兰依兰等:消炎、控油的好手 【效果】今天开门见山,先直击它的效果。最近天天熬夜,而且还例假(千万别学我),皮肤状态却依然好到爆,没长痘和闭口,痘印也很淡了,毛孔也小了肤色也亮了,素颜出门毫无压力,最重要的是这种状态保持好几天了真的太惊喜了 祛痘印:见效快,使用一次第二天肉…

    2022年9月24日
    420
  • 自媒体排行前十名的有哪些,中国自媒体十大平台介绍

    本期看点 哪个头条号排名上升最多? 哪个类别中媒体排名上升最多? 谁是发文量最多的作者? MCN机构如何能在榜单中持续生存? 财经房产 时尚 科技数码 健康 教育 体育 娱乐 游戏 MCN:头部继续强势 优质内容更有霸榜潜力 注:榜单排名以媒体指数为依据,媒体指数由发文量、阅读量、收藏量等指标加权计算得出。在媒体实验室网站可根据不同指标对榜单进行排名。 本榜单有一定筛选标准,根据媒体指数、内容质量…

    2022年8月30日
    1830
  • 淘宝怎么推广引流,淘宝的30种免费推广方法

    淘宝网是现如今国内也最大的一个电商平台了,这里成就了太多太多的商家,更是创造了无数个就业的岗位,而更多的还是中小卖家,还有很多的个人商家,这些商家其实在上面也挣不到什么钱,权当是一份工作,但对于这部分人来说也远要比替人打工要强。虽然说现在的淘宝没有以前那么好做了,很多的类目也都饱和了,但是只要是想做的人还是可以做的,这么大的蛋糕,多一个不多,少一个不少。下面就来分享一些淘宝新手开店可以操作的推广方…

    2022年7月12日
    580
  • 营销理念是什么,营销理念的常见口号及特征介绍

    现在各种各样的商业模式都充斥在市场环境下,而创业者在进行商业模式的选择过程中往往也是牛头不对马嘴。模式往往是对别人有用,但是对自己不一定有用。所以在选择商业模式时要考虑适不适合自己,所以商业模式的营销理念关乎着你的企业的命运。 【1】用户需求为主 商业模式都特别注重用户的需求,以消费者的需求为主。让我们抓住了消费者的心理需求,才能够使我们的商品我们的服务能够卖得出去,因为我们要避免产品思维,将我们…

    2022年5月19日
    900
  • 空气净化器优集品大促(2022空气净化器最新活动)

    每年的6月都会因为“618”年中大促而变得热闹非凡,各大商家都在趁着这个时机推出各种福利优惠吸引消费者,IAM就是其中之一。作为来自英国的轻奢家电品牌,IAM旗下的空气净化器系列产品一直备受市场和消费者的认可和喜爱。今年618,IAM推出了跨店满200减30、预约赠礼等多重优惠回馈广大消费者,有居家除醛、净化病毒等需求的朋友不容错过。 作为空净行业的领头品牌之一,IAM自2017年底进入中国市场以…

    2022年5月5日
    880
  • 人人贷理财好吗,人人贷平台背景实力介绍

    数据提供:《投投金融》APP 研究支持:福建省金司南金融研究院 发布时间:2020年5月21日 我们的数据来源于银行通过公开渠道披露的信息以及平台内用户调查。本次榜单统计时间范围为2020年5月1日~2020年5月31日,覆盖全国所有国有控股银行、股份制商业银行、城市商业银行。 在本次报告期内在售的1300余款银行理财产品中,平均预期收益率3.78%。除结构性产品外,本周13款产品(占比0.94%…

    2022年7月14日
    570
  • 摆地摊卖什么挣钱快,2020年最火爆地摊生意

    这段时间“地摊经济”成了关注的热点,忽如一夜春风来,很多城市都开始允许人们“文明占道经营”,也就是我们俗称的摆地摊。一时间地摊经济立刻火热起来,经营的品种也是五花八门,做服装、饰品、日用品、小吃等小生意的人们把各种地摊摆在了地铁口、人行道、天桥下,晚上天气凉爽以后,很多摊位前都围满了人,供需两旺,好不热闹。 “摆地摊”有一个很大的类别就是各类小吃,俗话说民以食为天,衣服可以不买,饰品可以不带,但吃…

    2022年8月18日
    480
  • 有线蓝牙耳机哪个品牌好,有线蓝牙耳机推荐

    随着各种高端技术,如蓝牙5.0,APT-X等的普及,让蓝牙耳机的音质也越来越值得期待,蓝牙耳机现在也成为了大家的主流之选。 对于很多国际高端大牌蓝牙耳机的用户来说,很多人并非是因为音质、技术,而是因为逼格和面子,追求其宣扬的时尚,也因此被很多明眼人调侃为交“智商税”。 与之相反的,耿直的JEET主打的“非时尚实战派”,受到了年轻时尚达人们的热烈追捧,认为这才是真的潮、真的酷。 比如JEET旗下的W…

    2022年6月19日
    660
  • 小米电视看直播用什么软件好, 盘点最好用的六款视频软件

    最近有很多朋友问我,小米电视能看直播吗?怎么看直播?在众多的直播软件中该如何选择适合自己的直播软件呢?今天小编为大家总结一下当今比较热门的直播软件供大家参考。 NO1、影视快搜 相对于其他的直播软件,我更喜欢影视快搜这款找片神器。原因很简单,因为影视快搜资源是最丰富的。覆盖1000多个电视直播台,还能搜到数十万部国内国外电影、电视剧、MV、综艺……更关键的是不用注册,播放没有广告,最为干净。 NO…

    2022年9月8日
    1010
  • 好玩的小游戏排行,十大好玩的休闲类游戏

    以下排名不分先后 1.元气骑士 评分9.6分游戏大小77.29MB 《元气骑士》是一款由凉屋游戏工作室研发的一款角色扮演类游戏,游戏于于2017年2月17日发布。 “世界危在旦夕,时间处于剑与魔法的时代,维持世界平衡的魔法石被拥有高科技的外星生物夺走了,你能否夺回魔法石拯救这个世界?”游戏讲述了外星生物夺走维持世界的魔法石的故事,玩家将扮演骑士、刺客等角色参与游戏,夺回魔法石。 2.我功夫特牛 评…

    2022年9月20日
    490

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信