一、客户端与服务端请求响应的关系

USER(客户端) 请求 tomcat(服务器), 属于HTTP请求。http请求是无状态的,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;所以当用户从客户端请求一次登录后,登录成功,再次进行请求时,因为tomcat不能识别这两次会话都是来自同一个浏览器,即服务端不知道客户端的历史请求记录;就会再次弹出登录对话框。

为了解决客户端与服务端会话同步问题。这便引出了下面几个概念:cookie、session。

于是,我们便把服务器中产生的会话sessionID存储到客户端浏览器cookie中去。在客户端存在周期为浏览器关闭时,消失。这样便解决了客户端请求服务端会话不同步问题。

二、cookie是什么
一个HTTP cookie的(网络Cookie,浏览器cookie)是一小片数据的一个服务器发送到用户的网络浏览器。浏览器可以存储它并将其与下一个请求一起发送回同一服务器。通常,它用于判断两个请求是否来自同一个浏览器 - 例如,保持用户登录。它记住无状态 HTTP协议的有状态信息。

三、session是什么
客户端请求服务端,服务端(Tomcat)会为这次请求开辟一块内存空间,这个对象便是Session对象, 存储结构为ConcurrentHashMap。

session的目的:弥补HTTP无状态特性,服务器可以利用session存储客户端在同一个会话期间的一些操作记录。

四、HTTP是无状态的
在同一连接上连续执行的两个请求之间没有链接。对于试图与某些页面连贯地相互作用的用户而言,这立即存在问题,例如,使用电子商务购物篮。但是,虽然HTTP本身的核心是无状态,但HTTP cookie允许使用有状态会话。使用标头可扩展性,HTTP Cookie被添加到工作流中,允许在每个HTTP请求上创建会话以共享相同的上下文或相同的状态。

五、session的实现机制
1、服务器如何判断客户端发送过来的请求属于同一个会话?
用session id区分;session id 相同即认为是同一个会话;
1
​ 在tomcat中session id中用JSESSIONID来表示;

2、服务器、客户端如何获取sessionID?SessionID在期间是如何传输的?
​ 服务器第一次接收到请求时,开辟了一块Session空间(创建了Session对象),同时生成一个Session id,并通过响应头的Set-Cookie:“JSESSIONID=XXXXXXX”命令,向客户端发送要求设置cookie的响应; 客户端收到响应后,在本机客户端设置了一个JSESSIONID=XXXXXXX的cookie信息,该cookie的过期时间为浏览器会话结束;

接下来客户端每次向同一个网站发送请求时,请求头都会带上该cookie信息(包含Session id); 然后,服务器通过读取请求头中的Cookie信息,获取名称为JSESSIONID的值,得到此次请求的Session id;

​ 注意:服务器只会在客户端第一次请求响应的时候,在响应头上添加Set-Cookie:“JSESSIONID=XXXXXXX”信息,接下来在同一个会话的第二第三次响应头里,是不会添加Set- Cookie:“JSESSIONID=XXXXXXX”信息的; 而客户端是会在每次请求头的cookie中带上JSESSIONID信息;

本文链接:https://blog.csdn.net/qq_28296925/article/details/80921585

转载于:https://www.cnblogs.com/joyco773/p/11581500.html

session与cookie之间的关系相关推荐

  1. cookie、session与token之间的关系

    cookie.session与token之间的关系 token 令牌,是用户身份的验证方式. 最简单的token组成:uid(用户唯一的身份标识).time(当前时间的时间戳).sign(签名). 对 ...

  2. session,sessionid,cookie之间的关系解析

    session,sessionid,cookie之间的关系解析 文章目录 session,sessionid,cookie之间的关系解析 1.简介 2.session和cookie定义,创建,周期和联 ...

  3. qq空间登陆 cookie_看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了||CSDN博文精选...

    作者:程序员cxuan Cookie 和 Session HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录:Session 和 ...

  4. php session和cookie区别,php中session和cookie的区别是什么?

    一.Session (1)Session的由来以及介绍 Session:在计算机中,尤其是在网络应用中,称为"会话控制",生存时间为用户在浏览某个网站时,从进入网站到关闭这个网站所 ...

  5. 浅谈Session与Cookie的关系

    阅读目录 一.概念理解: 首先cookie是服务端识别客户的唯一标识的依据,客户在访问网站时候,服务端为了记住这个客户,会在服务端按照它的规则制作一个cookie数据,会将这个cookie数据保留在服 ...

  6. 白话 Session 与 Cookie:从经营杂货店开始

    在Web开发里面有一个历久不衰的议题,那就是Session与Cookie的区别.从我刚开始学程序时这一题就常出现在面试考题里,一直到现在都还是能看见这个问题. 这个问题重要吗? 我觉得满重要的.因为S ...

  7. 深入理解 Session 与 Cookie

    Session 与 Cookie 不管是对 Java Web 的初学者还是熟练使用者来说都是一个令人头疼的问题.在初入职场时恐怕很多程序员在面试的时候都被问到过这个问题.其实这个问题回答起来既简单又复 ...

  8. Session,Cookie,jsessionid,Url重写

    在一些投票之类的场合,我们往往因为公平的原则要求每人只能投一票,在一些WEB开发中也有类似的情况,这时候我们通常会使用COOKIE来实现,例如如下的代码: < % cookie[]cookies ...

  9. PHP会话管理——Session和Cookie

    会话管理包括:Session和Cookie,主要功能都是把客户端和服务器关联起来,用于管理和查看用户在网站中的状态. 背景 Web应用程序是使用HTTP协议传输数据的.HTTP协议是无状态的协议.一旦 ...

  10. session和cookie的区别和联系

    1.Session和Cookie的区别 对象 信息量大小 保存时间 应用范围 保存位置 Session 小量,简单的数据 用户活动时间+一段延迟时间(一般为20分钟) 单个用户 服务器端 Cookie ...

最新文章

  1. 从单体到混乱的微服务,阿里云托管式服务网格是如何诞生的?
  2. HDU1520 Anniversary party 树形动态规划
  3. Spark MLlib学习笔记之二——Spark Mllib矩阵向量
  4. 80后阿里P10,“关老板”如何带着MaxCompute一路升级?
  5. 沃尔沃主动召回40万台车,只因一个罕见的问题
  6. throw和throws有什么区别
  7. 第三届长安杯检材一复盘
  8. wpsmac历史版本_wps mac版|wps for mac官方下载免费完整版-太平洋下载中心
  9. iMindMap手绘思维导图软件免费版
  10. IC设计中的glitch free时钟切换
  11. 群晖安装Calibre(含格式转换豆瓣元数据推送kindle)221211
  12. 乐学python视频资源_铁乐学python_day04-作业
  13. Uni-App 简单引导页示例
  14. 5“机”时代,如何掘金新价值和新机遇?
  15. flutter源码下载(最新)
  16. stm32cube,hal库来实现PS2手柄数据发送
  17. (完整项目源码)GPS定位源码整套管理系统,轨迹播放,车辆管理,电子围栏,报警记录,数据库/人员定位/宠物定位/物流跟踪/资产定位
  18. CSR8670 /CSR8675 升级文件DFU制作
  19. 基于ABC人工蜂群优化算法的最优解搜索算法matlab仿真
  20. 依云工资查询系统升级方法

热门文章

  1. SystemExit: 2
  2. python-os库函数一些用法记录
  3. html辅助方法实现原理,前端每日实战:苦练 CSS 基本功——图解辅助线的原理和画法...
  4. js基础知识汇总10
  5. 对于机器学习而言如何翻越测试集
  6. Python爬取豆瓣网中即将上映的电影数据清单
  7. sklearn实践之——计算回归模型的四大评价指标(explained_variance_score、mean_absolute_error、mean_squared_error、r2_score)
  8. c++ 多线程_python要点-多线程
  9. 软件学报 流程 期刊投稿记录 状态变更 时间
  10. IPFS python api 示例