当前位置:网站首页>Session和Cookie,Token
Session和Cookie,Token
2022-07-31 05:17:00 【Forevermoremo】
Session
Session是一种在服务器端记录用户信息的技术,一般Session用来在服务器端与客户端之间共享数据。
Cookie
Cookie是一种在客户端记录用户信息的技术,因为http协议是无状态的,为了解决这个问题而产生了Cookie。
Cookie存于浏览器内置Cookies中。如图:
Cookie是一段不超过4KB的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。
客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的地址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
Session与Cookie
Session一般情况下依赖于Cookie,Session创建出来把sessionId通过Cookie传递,客户端请求时再传递给服务器。因此需要确认浏览器是否开启Cookie存储。
基于服务器端的验证如下:
1.用户通过用户名和密码发送请求。
2.程序校验,如果客户端请求不包含sessionId,则服务器为此客户端创建一个session并且生成一个与此session相关联的sessionId,并返回SESSIONID标识给客户端。
4.客户端储存SessionId于Cookies中,每次发起请求浏览器将自动携带Cookie到服务器端。
5.服务器端检索。检索成功则返回请求数据,检索失败则返回错误码。
如图:
Token
基于Token的身份验证是无状态的,我们不需将用户信息存在服务器或Session中。
基于Token的身份验证的过程如下:
1.用户通过用户名和密码发送请求。
2.程序校验,校验成功后就返回Token给客户端。
4.客户端储存Token,每次访问API携带Token到服务器端。
5.服务器端采用filter过滤器校验。校验成功则返回请求数据,校验失败则返回错误码。
每次请求token应该在HTTP的头部发送从而保证了Http请求无状态。我们可以通过设置服务器属性Access-ControlAllow-Origin:* ,让服务器能接受到来自所有域的请求。
过程如图:
总结
Session和Cookie,Token 都是作用于服务器端与客户端的数据共享。
Session是基于服务器的验证,随着Web移动端兴起,也逐渐暴露了一些内存开销、可拓展性、跨域问题 ,Token这种方式恰好能够解决这些问题,虽然服务器涉及得更多,但是也方便了我们前端去解决跨域等问题。
参考:
https://www.cnblogs.com/moyand/p/9047978.html
https://blog.csdn.net/Deft_MKJing/article/details/53762277
边栏推荐
- 我的训练函数模板(动态修改学习率、参数初始化、优化器选择)
- Understanding of js arrays
- 数据预处理、特征工程和特征学习-摘抄
- ERROR Error: No module factory availabl at Object.PROJECT_CONFIG_JSON_NOT_VALID_OR_NOT_EXIST ‘Error
- MySQL master-slave switching steps
- Tensorflow——演示
- CAS:1403744-37-5 DSPE-PEG-FA 科研实验用磷脂-聚乙二醇-叶酸
- DSPE-PEG-Azide DSPE-PED-N3 磷脂-聚乙二醇-叠氮脂质PFG
- MYSQL transaction and lock problem handling
- cocos2d-x-3.2 create project method
猜你喜欢
Chinese garbled solution in UTF-8 environment in Powershell
pyspark.ml特征变换模块
Attention based ASR(LAS)
Gradle sync failed: Uninitialized object exists on backward branch 142
The browser looks for events bound or listened to by js
Why does read in bash need to cooperate with while to read the contents of /dev/stdin
Pytorch每日一练——预测泰坦尼克号船上的生存乘客
pytorch模型微调finetuning训练image_dog(kaggle)
VS通过ODBC连接MYSQL(一)
VS connects to MYSQL through ODBC (1)
随机推荐
活体检测PatchNet学习笔记
UiBot has an open Microsoft Edge browser and cannot perform the installation
DSPE-PEG-Biotin,CAS:385437-57-0,磷脂-聚乙二醇-生物素可延长循环半衰期
mPEG-DSPE 178744-28-0 甲氧基-聚乙二醇-磷脂酰乙醇胺线性PEG磷脂
DSPE-PEG-Azide DSPE-PED-N3 磷脂-聚乙二醇-叠氮脂质PFG
我的训练函数模板(动态修改学习率、参数初始化、优化器选择)
Redis-Hash
CAS:474922-22-0 Maleimide-PEG-DSPE 磷脂-聚乙二醇-马来酰亚胺简述
深度学习知识点杂谈
Sqlite column A data is copied to column B
DSPE-PEG-COOH CAS:1403744-37-5 磷脂-聚乙二醇-羧基脂质PEG共轭物
jenkins +miniprogram-ci upload WeChat applet with one click
CAS:474922-22-0 Maleimide-PEG-DSPE Phospholipid-Polyethylene Glycol-Maleimide Brief Description
2022 SQL big factory high-frequency practical interview questions (detailed analysis)
Navicat从本地文件中导入sql文件
DSPE-PEG-Thiol DSPE-PEG-SH 磷脂-聚乙二醇-巯基脂质体制备用
MySQL 免安装版的下载与配置教程
podspec 校验依赖出错问题 pod lib lint ,需要指定源
Podspec automatic upgrade script
opencv之访问图像像素的三种方法