范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

深入聊聊CookieSession和Token

  此文主题和脉络结构如下:
  Cookie 和 Session
  HTTP 协议是一种 无状态协议  ,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性。Session 是什么
  客户端请求服务端,服务端会为这次请求开辟一块 内存空间  ,这个对象便是 Session 对象,存储结构为 ConcurrentHashMap  。Session 弥补了 HTTP 无状态特性,服务器可以利用 Session 存储客户端在同一个会话期间的一些操作记录。Session 如何判断是否是同一会话
  服务器第一次接收到请求时,开辟了一块 Session 空间(创建了Session对象),同时生成一个 sessionId ,并通过响应头的  Set-Cookie:JSESSIONID=XXXXXXX  命令,向客户端发送要求设置 Cookie 的响应; 客户端收到响应后,在本机客户端设置了一个  JSESSIONID=XXXXXXX  的 Cookie 信息,该 Cookie 的过期时间为浏览器会话结束;
  接下来客户端每次向同一个网站发送请求时,请求头都会带上该 Cookie信息(包含 sessionId ), 然后,服务器通过读取请求头中的 Cookie 信息,获取名称为 JSESSIONID 的值,得到此次请求的 sessionId。 Session 的缺点
  Session 机制有个缺点,比如 A 服务器存储了 Session,就是做了负载均衡后,假如一段时间内 A 的访问量激增,会转发到 B 进行访问,但是 B 服务器并没有存储 A 的 Session,会导致 Session 的失效。 Cookies 是什么
  HTTP 协议中的 Cookie 包括  Web Cookie   和浏览器 Cookie  ,它是服务器发送到 Web 浏览器的一小块数据。服务器发送到浏览器的 Cookie,浏览器会进行存储,并与下一个请求一起发送到服务器。通常,它用于判断两个请求是否来自于同一个浏览器,例如用户保持登录状态。
  HTTP Cookie 机制是 HTTP 协议无状态的一种补充和改良
  Cookie 主要用于下面三个目的 会话管理
  登陆、购物车、游戏得分或者服务器应该记住的其他内容 个性化
  用户偏好、主题或者其他设置 追踪
  记录和分析用户行为
  Cookie 曾经用于一般的客户端存储。虽然这是合法的,因为它们是在客户端上存储数据的唯一方法,但如今建议使用现代存储 API。Cookie 随每个请求一起发送,因此它们可能会降低性能(尤其是对于移动数据连接而言)。 创建 Cookie
  当接收到客户端发出的 HTTP 请求时,服务器可以发送带有响应的  Set-Cookie   标头,Cookie 通常由浏览器存储,然后将 Cookie 与 HTTP 标头一同向服务器发出请求。Set-Cookie 和 Cookie 标头
  Set-Cookie   HTTP 响应标头将 cookie 从服务器发送到用户代理。下面是一个发送 Cookie 的例子
  此标头告诉客户端存储 Cookie
  现在,随着对服务器的每个新请求,浏览器将使用 Cookie 头将所有以前存储的 Cookie 发送回服务器。
  有两种类型的 Cookies,一种是 Session Cookies,一种是 Persistent Cookies,如果 Cookie 不包含到期日期,则将其视为会话 Cookie。会话 Cookie 存储在内存中,永远不会写入磁盘,当浏览器关闭时,此后 Cookie 将永久丢失。如果 Cookie 包含 有效期   ,则将其视为持久性 Cookie。在到期指定的日期,Cookie 将从磁盘中删除。
  还有一种是  Cookie的 Secure 和 HttpOnly 标记  ,下面依次来介绍一下会话 Cookies
  上面的示例创建的是会话 Cookie ,会话 Cookie 有个特征,客户端关闭时 Cookie 会删除,因为它没有指定 Expires  或 Max-Age   指令。
  但是,Web 浏览器可能会使用会话还原,这会使大多数会话 Cookie 保持永久状态,就像从未关闭过浏览器一样。 永久性 Cookies
  永久性 Cookie 不会在客户端关闭时过期,而是在 特定日期(Expires)  或特定时间长度(Max-Age)  外过期。例如 Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;Cookie 的 Secure 和 HttpOnly 标记
  安全的 Cookie 需要经过 HTTPS 协议通过加密的方式发送到服务器。即使是安全的,也不应该将敏感信息存储在cookie 中,因为它们本质上是不安全的,并且此标志不能提供真正的保护。
  HttpOnly 的作用 会话 Cookie 中缺少 HttpOnly 属性会导致攻击者可以通过程序(JS脚本、Applet等)获取到用户的 Cookie 信息,造成用户 Cookie 信息泄露,增加攻击者的跨站脚本攻击威胁。 HttpOnly 是微软对 Cookie 做的扩展,该值指定 Cookie 是否可通过客户端脚本访问。 如果在 Cookie 中没有设置 HttpOnly 属性为 true,可能导致 Cookie 被窃取。窃取的 Cookie 可以包含标识站点用户的敏感信息,如 ASP.NET 会话 ID 或 Forms 身份验证票证,攻击者可以重播窃取的 Cookie,以便伪装成用户或获取敏感信息,进行跨站脚本攻击等。 Cookie 的作用域
  Domain   和 Path   标识定义了 Cookie 的作用域:即 Cookie 应该发送给哪些 URL。
  Domain   标识指定了哪些主机可以接受 Cookie。如果不指定,默认为当前主机(不包含子域名)。如果指定了Domain  ,则一般包含子域名。
  例如,如果设置  Domain=mozilla.org  ,则 Cookie 也包含在子域名中(如developer.mozilla.org  )。
  例如,设置  Path=/docs  ,则以下地址都会匹配:/docs  /docs/Web/  /docs/Web/HTTP  JSON Web Token 和 Session Cookies 的对比
  JSON Web Token ,简称 JWT  ,它和 Session  都可以为网站提供用户的身份认证,但是它们不是一回事。
  下面是 JWT 和 Session 不同之处的研究 JWT 和 Session Cookies 的相同之处
  在探讨 JWT 和 Session Cookies 之前,有必要需要先去理解一下它们的相同之处。
  它们既可以对用户进行身份验证,也可以用来在用户单击进入不同页面时以及登陆网站或应用程序后进行身份验证。
  如果没有这两者,那你可能需要在每个页面切换时都需要进行登录了。因为 HTTP 是一个无状态的协议。这也就意味着当你访问某个网页,然后单击同一站点上的另一个页面时,服务器的 内存中  将不会记住你之前的操作。
  因此,如果你登录并访问了你有权访问的另一个页面,由于 HTTP 不会记录你刚刚登录的信息,因此你将再次登录。
  JWT 和 Session Cookies 就是用来处理在不同页面之间切换,保存用户登录信息的机制 。
  也就是说,这两种技术都是用来保存你的登录状态,能够让你在浏览任意受密码保护的网站。通过在每次产生新的请求时对用户数据进行身份验证来解决此问题。
  所以 JWT 和 Session Cookies 的相同之处是什么?那就是它们能够支持你在发送不同请求之间,记录并验证你的登录状态的一种机制。 什么是 Session Cookies
  Session Cookies 也称为 会话 Cookies  ,在 Session Cookies 中,用户的登录状态会保存在服务器  的内存  中。当用户登录时,Session 就被服务端安全的创建。
  在每次请求时,服务器都会从会话 Cookie 中读取 SessionId,如果服务端的数据和读取的 SessionId 相同,那么服务器就会发送响应给浏览器,允许用户登录。
  什么是 Json Web Tokens
  Json Web Token 的简称就是 JWT,通常可以称为  Json 令牌  。它是RFC 7519   中定义的用于安全的  将信息作为 Json 对象  进行传输的一种形式。JWT 中存储的信息是经过数字签名  的,因此可以被信任和理解。可以使用 HMAC 算法或使用 RSA/ECDSA 的公用/专用密钥对 JWT 进行签名。
  使用 JWT 主要用来下面两点 认证(Authorization)  :这是使用 JWT 最常见的一种情况,一旦用户登录,后面每个请求都会包含 JWT,从而允许用户访问该令牌所允许的路由、服务和资源。单点登录  是当今广泛使用 JWT 的一项功能,因为它的开销很小。信息交换(Information Exchange)  :JWT 是能够安全传输信息的一种方式。通过使用公钥/私钥对 JWT 进行签名认证。此外,由于签名是使用 head   和 payload   计算的,因此你还可以验证内容是否遭到篡改。JWT 的格式
  下面,我们会探讨一下 JWT 的组成和格式是什么
  JWT 主要由三部分组成,每个部分用  .   进行分割,各个部分分别是Header  Payload  Signature
  因此,一个非常简单的 JWT 组成会是下面这样
  然后我们分别对不同的部分进行探讨。
  Header
  Header 是 JWT 的标头,它通常由两部分组成: 令牌的类型(即 JWT)  和使用的 签名算法  ,例如 HMAC SHA256 或 RSA。
  例如  {    "alg": "HS256",    "typ": "JWT"  }
  指定类型和签名算法后,Json 块被  Base64Url   编码形成 JWT 的第一部分。
  Payload
  Token 的第二部分是  Payload  ,Payload 中包含一个声明。声明是有关实体(通常是用户)和其他数据的声明。共有三种类型的声明:registered, public 和 private 声明。registered 声明  : 包含一组建议使用的预定义声明,主要包括
  ISS
  签发人
  iss (issuer)
  签发人
  exp (expiration time)
  过期时间
  sub (subject)
  主题
  aud (audience)
  受众
  nbf (Not Before)
  生效时间
  iat (Issued At)
  签发时间
  jti (JWT ID)
  编号 public 声明  :公共的声明,可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息,但不建议添加敏感信息,因为该部分在客户端可解密。private 声明  :自定义声明,旨在在同意使用它们的各方之间共享信息,既不是注册声明也不是公共声明。
  例如  {    "sub": "1234567890",    "name": "John Doe",    "admin": true  }
  然后 payload Json 块会被 Base64Url   编码形成 JWT 的第二部分。
  signature
  JWT 的第三部分是一个签证信息,这个签证信息由三部分组成 header (base64后的) payload (base64后的) secret
  比如我们需要 HMAC SHA256 算法进行签名  HMACSHA256(    base64UrlEncode(header) + "." +    base64UrlEncode(payload),    secret)
  签名用于验证消息在此过程中没有更改,并且对于使用私钥进行签名的令牌,它还可以验证 JWT 的发送者的真实身份 拼凑在一起
  现在我们把上面的三个由点分隔的 Base64-URL 字符串部分组成在一起,这个字符串可以在 HTML 和 HTTP 环境中轻松传递这些字符串。
  下面是一个完整的 JWT 示例,它对 header 和 payload 进行编码,然后使用 signature 进行签名  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
  如果想自己测试编写的话,可以访问 JWT 官网 https://jwt.io/#debugger-io JWT 和 Session Cookies 的不同
  JWT 和 Session Cookies 都提供安全的用户身份验证,但是它们有以下几点不同 密码签名
  JWT 具有加密签名,而 Session Cookies 则没有。 JSON 是无状态的
  JWT 是 无状态  的,因为声明被存储在客户端  ,而不是服务端内存中。
  身份验证可以在 本地  进行,而不是在请求必须通过服务器数据库或类似位置中进行。 这意味着可以对用户进行多次身份验证,而无需与站点或应用程序的数据库进行通信,也无需在此过程中消耗大量资源。可扩展性
  Session Cookies 是存储在服务器内存中,这就意味着如果网站或者应用很大的情况下会耗费大量的资源。由于 JWT 是无状态的,在许多情况下,它们可以节省服务器资源。因此 JWT 要比 Session Cookies 具有更强的 可扩展性  。JWT 支持跨域认证
  Session Cookies 只能用在 单个节点的域  或者它的子域  中有效。如果它们尝试通过第三个节点访问,就会被禁止。如果你希望自己的网站和其他站点建立安全连接时,这是一个问题。
  使用 JWT 可以解决这个问题,使用 JWT 能够通过 多个节点  进行用户认证,也就是我们常说的跨域认证  。JWT 和 Session Cookies 的选型
  我们上面探讨了 JWT 和 Cookies 的不同点,相信你也会对选型有了更深的认识,大致来说
  对于只需要登录用户并访问存储在站点数据库中的一些信息的中小型网站来说,Session Cookies 通常就能满足。
  如果你有企业级站点,应用程序或附近的站点,并且需要处理大量的请求,尤其是第三方或很多第三方(包括位于不同域的API),则 JWT 显然更适合。 后记
  前两天面试的时候问到了这个题,所以写篇文章总结一下,还问到了一个面试题, 禁用 Cookies,如何使用 Session  ?网上百度了一下,发现这是 PHP 的面试题......
  但还是选择了解了一下,如何禁用 Cookies 后,使用 Session 如果禁用了 Cookies,服务器仍会将 sessionId 以 cookie 的方式发送给浏览器,但是,浏览器不再保存这个cookie (即sessionId) 了。 如果想要继续使用 session,需要采用  URL 重写   的方式来实现,可以参考 https://www.cnblogs.com/Renyi-Fan/p/11012086.html
  如果文章对你有帮助,求各位看官点点个三连!!!

戴璐事件尘埃落定,韦某被免职,李某镖付出的代价更多前段时间要数讨论度最高的,那绝对是扬州桃色事件啊,一个年轻貌美的商务局副局长和一个领导有方的副市长居然做出了如此过分的事情,关键双方都是有家庭的,所以一时间成为网民们讨论的话题。不文远知行与地平线达成战略合作,赣锋锂业投资150亿扩产能第一财经汽车日评文远知行与地平线达成战略合作1月19日,自动驾驶公司文远知行与芯片公司地平线签署战略合作谅解备忘录。文远知行将基于地平线征程5芯片提供的开发平台和文远知行WerideOne软件解决祝贺国乒!女单八强独占五席,三场决赛再战韩国队,冲击五项冠军2023年1月20日,乒乓球常规挑战赛卡塔尔站继续进行,第五个比赛日结束,国乒再创佳绩,男单3人,女单5人打进八强,同时三个双打项目全部晋级决赛,小将的表现超过预期。男单国乒三人晋深度中创新航杠上宁德时代,是自不量力还是确有实力?记者庄键孟令稀编辑杨悦张慧2019年3月,在福建宁德的一座豪华酒店里,一场波澜不惊的锂电行业峰会在此召开。宁德时代(300750。SZ)董事长曾毓群中创新航(03931。HK)董事年夜饭里蕴含着什么健康秘诀?市健促中心提示,春节的脚步近了,年味渐渐浓烈起来。如何在享美味佳肴的同时,更注重健康呢?详见01hr高盐饮食高盐饮食带来片刻的嘴快,但也会给身体带来各类危害。摄入盐过量可能导致血压天冷了,少吃猪肉多吃它,比鱼肉便宜,比牛羊肉鲜美,太香了导语天冷了,少吃猪肉多吃它,比鱼肉便宜,比牛羊肉鲜美,高蛋白低脂肪,随手一炒,太香了!大家好,我是傻姐美食,今天孩子吵着要吃青椒炒八爪鱼,傍晚5点左右我领着孩子去了我们这的港栾码头儿童睡前故事小熊买糖果的故事有只小熊记性很不好,什么话听过就忘记。一天,小熊家里来了客人,妈妈让小熊到商店去买苹果鸭梨牛奶糖。小熊担心忘了,一边走一连念叨苹果鸭梨牛奶糖,苹果鸭梨牛奶糖他光顾着背那句话,一不留因为世界杯,收到了第一笔巨款不平凡的2022今天睡觉前收到了一条消息,说是因为我积极参与2022世界杯活动,获得的奖金,我昨日也收到世界杯相关奖金5。22。所以觉得今天最多也是这么多,结果打开收益时,我愣住了90后00后成年货消费主力军!超7成海鲜礼盒,销往中西部城市!跨区域采购成新时尚视频加载中(央视财经第一时间)春节渐近,消费市场活力满满。今年年货消费有哪些新特点?各地餐厅年夜饭预订情况如何?哪些城市是旅游过年热门目的地?来自电商平台的销售数据和用户调查显示,英国攝影师LevonBiss以微视距拍摄蝴蝶蛹的百变姿态蝴蝶极美,其生命週期中要经历从毛毛虫到结蛹,再蜕变成有着美丽翅膀的蝴蝶。擅长使用微距攝影创作的英国艺术家LevonBiss把蝶蛹作为主角,捕捉蝴蝶破蛹蜕变阶段的迷人之美!Levon你若盛开蝴蝶自来坚强造就精彩的人生。只有坚强,才能在波涛汹涌的航程中造就驾驭风浪水手只有坚强,才能在坎坷曲折的人生中培育到于斗争的战士。马克思说生活就像海洋,只有意志坚强的人,才能到达彼岸。坚强才
刘邦为何被称为流氓皇帝?盘点刘邦的那些不义之举刘邦是中国历史上著名的皇帝之一,他在中国历史上扮演了重要的角色。尽管他被视为一个伟大的统治者和领袖,但他也有许多不义之举。因此,他被称为流氓皇帝。本文将通过盘点刘邦的不义之举,来解2017年,阿根廷128岁老人自称希特勒,称躲了72年不想躲了阅读之前,麻烦您点一个关注,既方便您进行讨论与分享,又能给您带来不一样的参与感,感谢您的支持!2017年,阿根廷萨尔塔省,一则在互联网上流传甚广的视频瞬间吸引了全球人民的眼球,视频如何通过名字找一个人如何通过名字找一个人每个人都有一个的名字,它可以成为你其他人的重要渠道。但是,有时候你会发现很难通过一个人的名字来找到他。如果你正在寻找一个可靠的方法来通过名字找到一个人,那么本文ChatGPT认为导致失业的6大因素已出现4个!但它不支持躺平!近日,媒体报道了夫妻二人摆台一天收入9000的新闻冲上热搜。人们在赞美这对夫妻能干的同时,也感叹自己的处境不如人。现在就业形势依然严峻,有统计数据显示,广州的外卖本科学历已经达到了持续创新,深入融合,锐捷亮相2023CHIOTC今日,2023CHIOTC第四届全国医院物联网大会暨中国国际医院物联网产品展览会在合肥圆满闭幕。在医院高质量发展与智慧医院建设等政策背景下,当下医企之间生态厂商之间的合作模式,已逐华为Mate50用户有必要升级P60吗?还是等Mate60?华为P60系列这一次如果是抛开价格,三款手机还是值得购买的,虽有缺陷,但有不少技术还是遥遥领先的,像是影像上面依旧是非常强,全系标配了业界最高进光量的主摄,Pro的长焦F2。1光圈总金额逾490亿元!粤黔深化产业协作央广网广州3月27日消息(记者夏燕)近日,2023粤黔产业协作大会举行,现场签约产业投资项目23个,签约总金额493。1亿元。2023粤黔产业协作大会现场(央广网发陈文摄)据悉,粤谁的赛力斯?在新能源汽车江湖,或许没有任何企业间的合作,能具有他们这样的产业与资本影响力。他们就是华为与赛力斯(前身是小康股份,601127。SH),两者联手打造的问界(AITO)已成为新能源余承东炮轰某些车天天烧,称问界0起火,华为车质量要做NO。1在3月23日的华为春季旗舰新品发布会上,华为常务董事终端业务CEO智能汽车解决方案BUCEO余承东又大嘴一把。我知道很多车,它们几乎天天在烧,它们烧了以后,基本上他们自己处理掉了!VR体验AI光影屏3D互动体验屏数智阅读,来这里体验!为深入贯彻落实国家数字中国战略,进一步提升全民阅读推广优质公共数字文化资源,3月26日上午,e海悦读湖北省公共图书馆数智阅读惠民活动在襄阳市图书馆启动。市民在活动现场热情体验VR互17世纪,英国贵格会女性,向议会提交申请了哪些请愿书?历史开讲文木木编辑观星妇女说话的正当性玛格丽特费尔1666年发表的妇女说话的正当性扩展了乔治福克斯有关妇女沉默的学问的含义。充分揭露了教会对女人的讽刺隐喻解读,以及教会对妇女权利的