Cookie、Session、Token(没懂的话再看一遍)

Cooike、Session、Token

接触了这么久的Web,有必要好好总结下这一块了

什么是无状态HTTP协议

在网络没有当今这么发达的时代,Web基本就是用于文档的浏览,作为服务器而言也就是根据相应,加载对应的相应就是了,也就是说不需要记录你干了什么,你有什么,我只知道你请求了,我返回就是了,咱们到此结束就是了。每次请求都会是一次全新的请求。当然没有什么状态的存储一说。
所谓无状态HTTP协议,就是没有保存状态罢了。

会话机制出现

在这么一种没有存储的情况之下,随着网络技术的发展,Web也变得越来越强大,这时候就出现了会话机制。比如说,登录的时候,进行页面的跳转的时候一般都会发起新的请求,但是逻辑是我希望你登录之后才能看见,这时候,该不会让我一直去登录吧。会话机制就是这么的记住了你的状态,然后实现请求变化的时候也保存了状态。

主流的三种会话就是 Cooike、Session、Token

什么是 Cookie

Cookie存在于客户端 ,Cooike是一种存在于客户端的会话机制,由服务端发送到用户的浏览器并保存到本地的一小块数据,在浏览器下一次请求服务端的时候会带上发送给服务端
Cooike是不可以跨域的,每一个Cookie都会绑定一个单一的域名,无法再别的域名下使用,一级域名和二级域名是共享的

查看Cookie,在浏览器的Application中有一个Cooikes的模块存储了该网站的所有的Cooike,当然也可以通过代码document.cookie来获取Cookie的值。
在这里插入图片描述
如图所示就是该网站的所有的Cookie,包含了Cookie的name、Value,Domain(实现跨域)、Expires/maxAge(失效时间和最大的保存时间)、Size(大小,最大为4k),HttpOnly(阻止js脚本获取Cooike信息)、Secure(cookie只能通过https发送,不能通过http发送)

可以看到,Cooike就是这样一个十分具体形象的东西

客户端设置

document.cookie = "name=Indomite;age=12"

客户端可以设置Cookie的选项,但是不能设置 httpOnly ,设置好Cookie之后,Cookie被自动添加到request header中,服务器收到Cooike

服务端的设置
在response的header中有一项叫做set-cooike,专门用于服务端设置Cooike

  • 一个set-cooike只能设置一个cooike,使用多个的时候需要多次使用set-cooike
  • 服务端可以设置cookie的所有选项: expires, domain, path, secure, HttpOnly

在这里插入图片描述

什么是Session

服务端的Session,Session就是存在于服务端的会话,记录客户端与服务端的童话
Session基于Cookie实现,Session存在于服务端,但是需要和客户端进行练习的时候,就必须要通过Cookie了,Session_id会存储在Cookie中
在这里插入图片描述

Session与Cookie的会话流程
  1. 用户在第一次请求服务端的时候,服务端根据用户提交的相关消息创建对应的Session
  2. 服务端接到请求之后响应,返回Session的唯一标识Session_id给客户端,也就是存储在Cookie的Session信息
  3. 客户端接收到服务端发来的Session_id之后,将信息存入Cooike,同时记录好对应的Session_id属于那个域名
  4. 第二次客户端访问服务端的时候,请求会判断时候存在Cookie信息,存在的话直接发给服务端,服务端从Cookie获取Session_id,根据Session_id查找对应的Session信息,没有的话那状态失败,找到之后就可以进行之后的操作了

上述可见,Session_id就是连接Session和Cookie之间的桥梁
Session对应着一台服务器,当存在分布式的时候,服务器之间的Session共享就变得不那么简单了

什么是Token

Token令牌,Token就是访问资源接口(API)时所需要的凭证,在服务端将用户的信息通过Base64编码过后传给客户端,每次请求的时候都带上这一信息,服务端拿到之后解密就知道用户是谁了
Token组成,uid&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值