万维网(www:World Wide Web)的诞生起源自1990年12月15日蒂姆·伯纳斯·李利用网际网络实现了超文本传输协议(http:Hyper Text Transfer Protocol)客户端和服务器的第一次通讯 。

文章插图
http是运行在TCP之上的一种简单的请求、响应协议,所谓的协议就是形成了固有的套路 , 客户端指定向服务器发送什么信息,然后服务器就会做出与之对应的回应 。

文章插图
举个例子:GET、POST、HEAD等方法中,post一般用于客户端提交表单数据给服务器,或者上次文件给服务器,而head、get则是获取URL中指定的资源 。在使用get时请求的参数、值需要附加在URI(URI时URL的一种扩张,在HTTP协议中URI一般都是指URL)后面,利用"?"将资源的URI和请求参数、值隔离开来,参数、值之间使用“&”隔开 。

文章插图
万维网的发展历史要彻底理解session、cookie、token之间的区别,就不得不去翻开过去尘封的历史 。仅30年web发生了翻天覆地的变化 。

文章插图
早期的web其实是非常简陋的,仅仅实现的是基本的文本浏览而已 。用寒酸的表格来做框架定位还仅仅是后话 。仅仅只是文本和文本包含的超链接而已,服务器仅仅只是机械式的请求 , 然后响应,并不需要记录谁在某一个时间段里浏览了什么内容,也不需要记住是谁发的HTTP请求 。

文章插图
慢慢的网站就需要登录、留言、发表内容、内容管理、在线购物等等交互,这时web就需要引入会话管理机制,记录谁登录了系统,谁又将商品放入了购物车中等等 。由于早期的web本身就是无状态请求,于是有人就想出了一个办法,给每个访问的人发一个不会重复的号码牌,也就是session id(会话标识) 。由于session id是服务器发给每个接收端的一串随机字符串 , 这样就能够区分谁是谁了 。

文章插图
session id看似解决web无状态请求的问题,但也造成了不小的困扰 。比如在负载均衡组成的集群中,当我们通过机器A登录 , session id就会保持在机器A上 。但如果下次请求转发到了机器B,就需要将机器A的session id复制到机器B上 , 所以总是在session复制、粘贴的过程,如果保存了session的机器挂了新的问题接着又产生了 。

文章插图
除此之外每个人的设备确实是保存了属于自己的session id,但服务器却要保存所有的session id , 这可不一定是几个几十个了,二十成千上万 , 甚至几十、上百万个 。

文章插图
session其实也特别不安全,如果有人伪造了你的session id , 也就意味着他可以为所欲为了 。可以通过cookie的方式来保存session id,但cookie的区别在于其主要内容包括了名字、值、过期时间、路径、域等信息 , cookie可以实现类似于访问者离开店铺或者关闭浏览器,再打开店铺就能马上回复购物车的功能 。但cookie一旦过期就会被清理,当访问者再次打开网站时又会重新分配cookie 。

文章插图
这么看来session id和cookie在本质上并没有完全的区别,别人想伪造很容易伪造 。于是token就出现了 , 比如用HMAC-SHA256算法加上一个密钥来对数据进行签名 , 那么别人不知道密钥,那么就没有办法伪造了,签名和数据组合在一起就是token了 。
- 清明节和重阳节的区别 清明节重阳节分别是什么
- 汪峰和华晨宇什么关系 歌手华晨宇为什么每次都是第一
- 韩国电影寄生虫详细剧情 寄生虫是韩国电影吗
- 警惕胃癌早期四大征兆有哪些
- 三星堆遗址被誉为什么? 三星堆为什么叫三星
- 世界十大凶猛斗犬排名 世界上什么狗最凶猛排名第一的是谁
- 你为什么要把我拉黑 老婆拉黑老公说明什么
- 拉黑最爱的人是种什么感受 把男友拉黑,他什么感觉
- 心机小三都是怎么打击原配的 聪明的小三对付原配
- 小三超能作可出轨男人就是喜欢 怎样分离小三的聪明做法
