简单介绍session,cookie,token以及区别

news/2024/5/18 15:45:52 标签: cookie, session, java, token, http
http://www.w3.org/2000/svg" style="display: none;">

Cookie简介

①.是由服务器发给客户端的特殊信息,以文本的形式存放在客户端
②.客户端再次请求的时候,会把Cookie回发给服务器
③.服务器接收到后,会解析Cookie生成与客户端相对应的内容

Cookie的设置与发送过程分以下四步:(cookie的实现方式)
客户端发送一个http请求到服务端
服务端发送一个http响应到客户端,其中包括了Set-Cookie的头部
客户端再发送一个http请求到服务器端,包括了cookie头部
服务器端发送一个http响应到客户端

Session简介

①.服务器端的机制,在服务器上保存的信息
②.解析客户端请求并操作session id ,按需保存状态信息

Session的实现方式

使用cookie实现

服务器给每一个session分配唯一的JSessionID,并通过cookie发送给客户端,当客户端发起新的请求时候,将在cookie头中携带JSessionID,这样服务器能够找到客户端对应的session

使用URL地址回写

当服务器发送给浏览器页面的所有链接中,都携带JSessionID的参数,这样客户端点击任何一个链接,都会把JSessionID带回服务器,如果直接在浏览器输入服务端资源的URL来请求该资源,那么session是请求不到的

区别

session就是会话,是存储在服务器端,有一个用户访问网站,服务器就会开一块区域来保存session信息,比如sessionId,登录信息等,可以自定义保存各种会话相关的信息。可以理解为一个状态列表,拥有一个唯一识别符号sessionId,通常存放于cookie中,依赖cookie。服务器收到cookie后解析出sessionId,再去session列表中查找,才能找到相应session

cookie是客户端浏览器上的,也可以理解为浏览器端,也是用来保存各种自定义信息,装有sessionId浏览器通常会自动添加。有了cookie,浏览器在下次访问网页时会自动附带上它发送给服务器,服务器通过识别 cookie 并鉴定出是哪个用户,然后再判断用户是否是登录状态,进而返回对应的响应。
不过cookie容量小,现在被h5的缓存替代了,就是localStorage和sessionStorage,cookie一般用不到了。

token是登录的标识,是我们自己定义的一种业务信息,可以存到sessioncookie、h5缓存、redis,根据你业务的需要来生成和存放,用户信息都被加密到token中,服务器收到token后解密就可知道是哪个用户,需要开发者手动添加。

附加一道面试题

我们怎样利用 Cookies 保持状态呢?

当客户端第一次请求服务器时,服务器会返回一个响应头中带有 Set-Cookie 字段的响应给客户端,用来标记是哪一个用户,客户端浏览器会把Cookies 保存起来。当浏览器下一次再请求该网站时,浏览器会把此 Cookies 放到请求头一起提交给服务器,Cookies 携带了 Session ID 信息,服务器检查该 Cookies 即可找到对应的 Session 是什么,然后再判断 Session 来以此来辨认用户状态。


http://www.niftyadmin.cn/n/1620479.html

相关文章

网络游戏技术

这里写自定义目录标题1. 网络游戏技术1.1. 网络游戏专业术语中英文对照版1.2. 网关服务器1.3. 贴图、纹理、材质的区别是什么1.4. shader 简介1.5. 什么是 Unity Ads1. 网络游戏技术 1.1. 网络游戏专业术语中英文对照版 http://www.wikiwand.com/zh-cn/%E9%9B%BB%E5%AD%90%E9…

当远程桌面到Windows终端服务器,出现终端服务器超出了最大允许连接数,怎么办...

如果是老版本的MSTSC则使用 MSTSC /console /v:ip如果是新版本 MSTSC /admin /v:ip

S3C2410 实验三——块拷贝、字拷贝(寄存器的理解)

因为笔记做在 evernote 上,博客上就不再重新敲了。 http://www.evernote.com/shard/s307/sh/5bd591a1-dbbd-4457-812a-17c08c2234e1/7ffcd2b6a24f6ef4f930e85885de9ad1

centos7有关于防火墙的命令

查看防火墙状态 firewall-cmd --state 开启防火墙 systemctl start firewalld.service 关闭防火墙 systemctl stop firewalld.service

分布式技术

这里写自定义目录标题1. 分布式技术1. 分布式与集群的区别2. 分布式2.1. 什么是分布式2.2. 为什么会有分布式CAP 定理的含义1. 分布式系统的三个指标2. Partition tolerance3. Consistency4. Availability5. Consistency 和 Availability 的矛盾6. 答疑7. 取舍策略8. 总结分布式…

iOS web remote debug 正确的姿势

在使用iOS Remote debug需要做以下准备 1. iOS devices 开启java script and web inspector 开启方式如下: 2. mac OS 自带的Safari开启develop 模式 开启方法如下: 如何使用iOS remote debug?

Google Chrome打开权限设置开关(摄像头,录音等)

在搜索框输入以下字符 chrome://flags/#unsafely-treat-insecure-origin-as-secure

docker-compose 配置

这里写自定义目录标题1. docker-compose 配置1. docker-compose 配置 根据官方文档Compose file version 3 reference 中 docker-compose.yml 大致格式如下: version: "3" --> 指使用 docker-compose 的哪个版本,这里使用第 3 版,目前最…