cookie session token

cookie、session、token的区别是什么 是曲奇饼,甜点的意思,这里不得不提到一个前雇员,故事简略说就是,发明这个人的是一个公司的前雇员,这个公司待遇比较好,每天都会有定时的甜点,饮料等吃的,可以给每个雇员免费品尝,而这个前雇员特别喜欢公司里 的甜点,每次都吃的好多好多,后来…总之每一个客户端与服务端连接,服务端都会为该客户端创建一个 session,并将 session 的唯一标识 sessionId 通过设置 Set-Cookie 头的方式响应给客户端,客户端将 sessionId 存到 cookie 中。 阅读详情

Cookie

1.属性

Expires该属性用来设置Cookie的有效期。Cookie中的maxAge用来表示该属性,单位为秒。Cookie中通过getMaxAge()和setMaxAge(int maxAge)来读写该属性。maxAge有3种值,分别为正数,负数和0。

如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中(每个浏览器存储的位置不一致)。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。下面代码中的Cookie信息将永远有效。

Cookie cookie = new Cookie("jiangwang",System.currentTimeMillis()+"");

// 设置生命周期为MAX_VALUE,永久有效

cookie.setMaxAge(Integer.MAX_VALUE);resp.addCookie(cookie);

当maxAge属性为负数,则表示该Cookie只是一个临时Cookie,不会被持久化,仅在本浏览器窗口或者本窗口打开的子窗口中有效,关闭浏览器后该Cookie立即失效。

修改或者删除Cookie

HttpServletResponse提供的Cookie操作只有一个addCookie(Cookie cookie),所以想要修改Cookie只能使用一个同名的Cookie来覆盖原先的Cookie。如果要删除某个Cookie,则只需要新建一个同名的Cookie,并将maxAge设置为0,并覆盖原来的Cookie即可。

新建的Cookie,除了value、maxAge之外的属性,比如name、path、domain都必须与原来的一致才能达到修改或者删除的效果。否则,浏览器将视为两个不同的Cookie不予覆盖。

Cookie的域名

Cookie是不可以跨域名的,隐私安全机制禁止网站非法获取其他网站的Cookie。

正常情况下,同一个一级域名下的两个二级域名也不能交互使用Cookie,比如a1.jiangwang.com和a2.jiangwang.com,因为二者的域名不完全相同。如果想要jiangwnag.com名下的二级域名都可以使用该Cookie,需要设置Cookie的domain参数为.jiangwang.com,这样使用a1.jiangwang.com和a2.jiangwang.com就能访问同一个cookie

Cookie的路径

path属性决定允许访问Cookie的路径。比如,设置为"/"表示允许所有路径都可以使用Cookie

4.应用

Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。

Session

1.什么是Session

在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。

2.Session实现原理

服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。

Token

1.什么是Token

token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。

当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。

简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。

2.Token的原理

  1. 用户通过用户名和密码发送请求

  2. 程序校验

  3. 程序返回一个Token给客户端

  4. 客户端存储Token,并且每次发送请求携带Token

  5. 服务端验证Token,并返回数据

3.Token的优缺点

优点:

  1. 支持跨域访问: Cookie是不允许垮域访问的,token支持;

  2. 无状态: token无状态,session有状态的;

  3. 去耦: 不需要绑定到一个特定的身份验证方案。Token可以在任何地方生成,只要在 你的API被调用的时候, 你可以进行Token生成调用即可;

  4. 更适用于移动应用: Cookie不支持手机端访问的;

  5. 性能: 在网络传输的过程中,性能更好;

  6. 基于标准化: 你的API可以采用标准化的 JSON Web Token (JWT). 这个标准已经存在 多个后端库(.NET, Ruby, Java,Python, PHP)和多家公司的支持(如: Firebase,Google, Microsoft)。

缺点:

  1. 占带宽,正常情况下要比 session_id 更大,需要消耗更多流量,挤占更多带宽,假如你的网站每月有 10 万次的浏览器,就意味着要多开销几十兆的流量。听起来并不多,但日积月累也是不小一笔开销。实际上,许多人会在 JWT 中存储的信息会更多;

  2. 无法在服务端注销,那么久很难解决劫持问题;

  3. 性能问题,JWT 的卖点之一就是加密签名,由于这个特性,接收方得以验证 JWT 是否有效且被信任。但是大多数 Web 身份认证应用中,JWT 都会被存储到 Cookie 中,这就是说你有了两个层面的签名。听着似乎很牛逼,但是没有任何优势,为此,你需要花费两倍的 CPU 开销来验证签名。对于有着严格性能要求的 Web 应用,这并不理想,尤其对于单线程环境。

 参考

百度翻译-200种语言互译、沟通全世界!

Cookie、Session、Token的区别 它们常被一起讨论,但不是一个维度的概念。Cookie是Session实现的一种方式(传递Session ID的载体)。Session的核心是服务器端存储。:这是两种不同的会话管理思路。Session是“有状态”的,服务器记得谁是谁。Token是“无状态”的,服务器不记得谁是谁,每次请求时客户端出示“令牌”(Token)自证身份。现代开发常用组合传统Web应用CookieSession前后端分离/APP/微服务Token(存储在客户端的或Cookie中,但通过传输) 阅读详情

相关推荐

彻底搞清session、cookie、token的区别

摘要: HTTP协议的无状态性导致服务器无法识别同一客户端的多次请求,为解决这一问题,Cookie、Session和Token应运而生。Cookie存储于客户端(≤4KB),自动携带于请求头,但存在安全与跨域问题;Session存储于服务端,通过SessionID与Cookie关联,安全性高但消耗服务器资源;Token(含Header、Payload、Signature)仅存储用户ID,无需服务器存储,安全性强且支持跨域,但需频繁查询数据库。三者各具优劣:Session以空间换时间,Token以时间换空间,

weixin_70787959的博客 1004

Cookie,Session,Token

当浏览器发送 HTTP 请求到服务器时,服务器会响应客户端的请求,但当同一个浏览器再次发送请求到该服务器时,服务器并不知道它就是刚才那个浏览器 通常情况下,用户通过浏览器访问 Web 应用时,服务器都需要保存和跟踪用户的状态。例如,用户在某购物网站结算商品时,Web 服务器必须根据请求用户的身份,找到该用户过往所购买的商品 由于 HTTP 协议是无协议的,无法保存和跟踪用户状态,所以需要其他的方案来解决问此题,它就是会话技术。 什么会话?从打开浏览器访问某个网站,到关闭浏览器的过程,称为一次会话。会话

weixin_47414034的博客 1861

yolov5 onnx推理时报错[ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Unexpected input data type.

yolov5 onnxruntime 推理报错

zjulkw的博客 1223

js-cookie设置token过期时间

刚开始是设置1小时 import Cookies from 'js-cookie' const TokenKey = 'token' export function getToken() { return Cookies.get(TokenKey) } export function setToken(token) { return Cookies.set(TokenKey, token,...

weixin_43550562的博客 4601

从零到一:YOLOv11高帧率模型在RDK X5上的ONNX转换与部署实战

本文详细介绍了将最新的YOLOv11高帧率模型部署到地平线RDK X5开发板的完整实战流程。内容涵盖从PyTorch模型导出ONNX、地平线工具链环境配置与模型量化编译,到编写高效的板端推理代码,并针对高帧率目标进行了后处理优化。通过实战避坑指南,帮助开发者在RDK X5上实现30FPS以上的实时目标检测。

weixin_29089057的博客 142

高通ISP模块全解析:从Raw到JPEG的18个关键处理步骤(附避坑指南)

本文全面解析高通ISP模块从Raw到JPEG的18个关键处理步骤,涵盖原始数据预处理、色彩科学处理链、画质增强与降噪等核心环节。通过实战调优经验,揭示ISP架构中的技术原理与工程实践要点,帮助开发者避免常见问题,提升移动影像处理质量。

weixin_30399155的博客 360

【解决】在Chrome浏览器Cookies内,给项目手动添加token,会报红且无法保存

问题: 在Chrome浏览器Cookies内给项目手动添加token时,发现无法添加成功,示例如下: 解决: 打开Chrome浏览器,访问地址chrome://flags,然后搜索Partitioned 将Partitioned cookies设置项改为Enabled 右下角一键或手动重启浏览器,使更改生效 ...

huangfuyk.的博客 6162

高通camx架构学习(零)—— 深入理解Camera 硬件抽象层

从上面的定义可以看出,主要是通过hw_module_t 代表了模块,通过其open方法用来打开一个设备,而该设备是用hw_device_t来表示,其中除了用来关闭设备的close方法外,并无其它方法,由此可见谷歌定义的HAL接口,并不能满足绝大部分HAL模块的需要,所以谷歌想出了一个比较好的解决方式,那便是将这两个基本结构嵌入到更大的结构体内部,同时在更大的结构内部定义了各自模块特有的方法,用于实现模块的功能,这样,一来对上保持了HAL的统一规范,二来也扩展了模块的功能。

图像学习之旅 1670

cookie中存入token,解决多用户登录问题

1.存入 1.1 所需形参 HttpSession session, HttpServletResponse response 1.2 将token存入cookie token = UUID.randomUUID().toString(); Cookie tokenCookie = new Cookie("token", token); tokenCookie.setMaxAge(60*60*24); tokenCookie.setPath("/"); response.addCookie(tokenCo

weixin_44099000的博客 2517

从NASA官网到分析图:MOD09A1地表反射率数据的完整处理流程(含QC筛选)

本文详细介绍了MOD09A1地表反射率数据的完整处理流程,从NASA官网数据下载到QC筛选,再到NDVI图生成。特别强调了质量控制(QC)信息在筛选可靠像元中的关键作用,帮助研究人员获取高质量遥感数据。

weixin_42542669的博客 111

如何理解反步法设计控制器?

假设以二阶系统为例,被控对象的系统状态方程为: 基于反步控制的具体方法如下: 1.1步骤一 定义期望状态为xd,状态误差e1,为: e1=x1-xd; 则e1的导数为: 1.2步骤二 定义虚拟控制量为: e2定义为: 1.3步骤三 定义Lyapunov能量函数为: 1.4步骤四 定义总Lyapunov能量函数为: 因此设计的控制律为: 设计c>0,则: 满足Lyapunov的稳定性判定条件...

weixin_42736130的博客 2万+

cookie,session与token

Cookie cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。 Seesion session是服务器就要给每个客户端分配不同的“身份标...

qq_34778691的博客 209

Mongodb操作与Java(四)MongoTemplate的使用

MongoTemplate的使用

A乐神的博客 3438

session、cookie、token的区别?

今天就来理一理session、cookie、token这三者之间的关系!cookie 有存储大小限制,4KB 左右。浏览器每次请求会携带 cookie 在请求头中。字符编码为 Unicode,不支持直接存储中文。数据可以被轻易查看。属性名称属性含义namecookie 的名称valuecookie 的值commentcookie 的描述信息domain可以访问该 cookie 的域名expirescookie 的过期时间,具体某一时间maxAge。

W-Mo-Mo的博客 1万+

大厂校招:星宸科技嵌入式面试及参考答案(5万字长文)

当一个新的硬件设备被插入系统时,内核会发送一个设备事件通知 udev,udev 会根据设备的属性和规则,为该设备创建一个合适的设备文件。通过去除不必要的驱动程序、禁用不需要的功能、选择合适的内核配置选项、优化内核编译选项和定制内核模块等方法,可以减小内核的大小和复杂性,提高系统的性能和稳定性。上半部通常是在中断关闭的情况下执行的,以确保中断处理的原子性。处理碎片化内存是内存管理中的一个重要问题,可以采用内存压缩、内存池管理、伙伴系统、首次适应算法和最佳适应算法等方法来减少内存碎片的产生,提高内存的利用率。

大模型大数据攻城狮的专栏 2929

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Token,Cookie和Session三者的区别

在做各种接口测试时,经常会碰到请求参数为token的类型,但是可能大部分测试人员对token,cookie,session的区别还是一知半解。

winkexin的博客 6592

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Session、Cookie、Token讲解

我们都知道的,所谓的无状态就是客户端每次想要与服务端通信,都必须重新与服务端链接,意味着请求一次客户端和服务端就连接一次,下一次请求与上一次请求是没有关系的。这种无状态的方式就会存在一个问题:如何判断两次请求的是同一个人?就好比用户在页面 A 发起请求获取个人信息,然后在另一个页面同样发起请求获取个人信息,我们如何确定这俩个请求是同一个人发的呢?为了解决这种问题,我们就迫切需要一种方式知道发起请求的客户端是谁?

2301_78125917的博客 1120

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【Session、Cookie、Token(JWT)】

自包含:指的是jwt令牌,看似是一个随机的字符串,但是我们是可以根据自身的需求在jwt令牌中存储自定义的数据内容。用户登录成功后,系统会自动下发JWT令牌,然后在后续的每次请求中,都需要在请求头header中携带到服务端,请求头的名称为 token ,值为 登录时下发的JWT令牌。运行测试方法,输出的结果就是生成的JWT令牌,,通过英文的点分割对三个部分进行分割,我们可以将生成的令牌复制一下,然后打开JWT的官网,将生成的令牌直接放在Encoded位置,此时就会自动的将令牌解析出来。

m0_72168982的博客 1488

cookie、session、token、JWT

cookie、session、token、JWT

lza20001103的博客 1245

Cookie、Session和Token

Cookie、Sessioin和Token总结

啊松同学的博客 1134

cookie和session和token的区别

本质:服务器发送给客户端(浏览器)的小型文本数据(通常 4KB 以内),存储在客户端本地。工作流程用户首次访问服务器时,服务器生成 Cookie 并通过响应头(Set-Cookie)发送给浏览器;浏览器将 Cookie 保存到本地(如硬盘或内存);后续用户访问该服务器时,浏览器会自动将 Cookie 放入请求头(Cookie)中发送给服务器,供服务器识别用户。特点可设置过期时间(expires或max-age):过期后自动删除,否则默认关闭浏览器后失效;有域名和路径限制(domain。

m0_71804489的博客 1917

彻底弄懂session,cookie,token

原优质博文链接:https://segmentfault.com/a/1190000017831088 session,cookie和token究竟是什么 简述 我在写之前看了很多篇session,cookie的文章,有的人说先有了cookie,后有了session。也有人说先有session,后有cookie。感觉都没有讲的很清楚,泛泛而谈。希望本篇文章对大家有所帮助 注:本文需要读者有c...

天天water的专栏 4281

Session,Cookie和Token

但token不同,token是开发者为了防范csrf而特别设计的令牌,浏览器不会自动添加到headers里,攻击者也无法访问用户的token,所以提交的表单无法通过服务器过滤,也就无法形成攻击。服务器端接受客户端请求后,建立一个session,并发送一个http响应到客户端,这个响应头,其中就包含Set-Cookie头部。该头部包含了sessionId。现在大多都是Session + Cookie,但是只用session不用cookie,或是只用cookie,不用session在理论上都可以保持会话状态。

yyzz7579的博客 1135

Cookie,Session,Token

Cookie、Session和Token是用于在Web应用程序中管理用户状态和身份验证的技术。因为在Web应用中,HTTP的通信是无状态的,每个请求都是完全独立的,所以服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。

埃泽漫笔 1108

Cookie-Session和Token认证方式

本篇文章主要介绍了cookie、session和token的基本概念,以及两种不同的认证方式

alivinFer的个人博客 968

cookie、session、token的区别

什么是认证(Authentication) 由于http是无状态的协议,因此,需要各种通行证来证明身份。 我们主要有以下几种方式的证明。 什么是 Cookie cookie 对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息:每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器

qq_45839045的博客 6384
上一篇: cookies、sessionStorage和localStorage以及vuex解释及区别
下一篇: 若依前后端项目启动
BUG_devil
博客等级 码龄5年 45粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值