总结:
相同点:
都是用于鉴权,由服务器产生。
不同点:
cookie存储在客户端,session存储在服务器内存,token存储在服务器硬盘。
session和token的安全性比cookie更高。
token比session更节省资源,不需要管理sessionid。
1、HTTP协议
http是超文本传输协议,主要是客户端和服务器之间交互数据,交互分为请求和响应两部分。
(“超文本”是超级文本的中文缩写。超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。超文本更是一种用户界面范式,用以显示文本及与文本之间相关的内容。)
请求:
请求行:请求方式(GET POST) 请求路径(hao123_上网从这里开始) 协议(HTTP/1.1)
请求头:GET /vpbx.cgi?action=login HTTP/1.1 Host: 192.168.10.210 Connection: keep-alive Accept: */* X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Content-Type: application/json;charset=UTF-8 Referer: http://192.168.10.210/login.html Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9
中间空一行
请求正文:
响应:
响应行:协议(HTTP/1.1) 响应信息(200 OK)
响应头:HTTP/1.1 200 OK Content-type: application/json Accept-Ranges: bytes Content-Length: 41 Date: Mon, 23 May 2022 02:12:38 GMT Server: lighttpd/1.4.63
响应正文:
http协议默认使用80端口
https = http + ssl安全传输协议,端口是443
特点:简单、快捷,无连接无状态,指的是多个请求之间是没有关联的,独立的。
实例:登录,搜索,下单,支付,评论。都是相互独立的。
http不具备记录状态的功能,就不知道是否是同一个用户是否进行了登录,搜索,下单、支付等功能。
所以发明了cookie就是用于解决http协议多个请求之间无连接的场景。
二、Cookie以及Cookie鉴权的原理和实战
1、Cookie是什么?
Cookie服务器产生的保存在客户端的一小段文本信息。格式是字典格式,键值对。
(1)、会话级Cookie:保存在内存,当浏览器关闭会自动消失。
(2)、持久化Cookie:保存在硬盘,当浏览器关闭不会自动消失,他的生命周期取决于失效时间。
2、如何查看Cookie?(保存在客户端)
(1)、F12直接可以查看。
可以看到作用于服务器的哪个路径
3、Cookie鉴权如何实现的?
第一步:客户端第一次访问服务器时生成Cookie,通过响应头中Set-Cookie传输到客户端,然后在客户端保存。
第一步:客户端第2-N次访问服务器时,在请求头里会自动带上客户端保存的Cookie,然后和服务器的Cookie进行比较,实现鉴权。
4、Cookie的缺点
服务器生成保存在客户端,对于一些重要信息,用户名,密码通过cookie保存并不安全。
能不能把重要的数据保存到服务器,把不重要的数据保存到Cookie。
三、Session以及Session鉴权的原理和实战(保存在内存中)
1、Session如何实现鉴权?
第一步:当客户端登录服务器的时候,服务器生成sessionid并且保存到服务器,通过登录请求的响应头里面把sessionid通过Cookie传输给客户端。
第二步:后面所有的请求都会在请求头Cookie里面带上sessionid,然后服务器的sessionid进行对比实现鉴权。
sessionid默认生命周期是半个小时,半小时后会换sessionid。
如果服务器访问量过大,生成的sessionid过多,服务器承载不下了,session满足不了需求,出现了token。
四、token以及token鉴权的原理和实战(保存在硬盘)
token:令牌,鉴权码。
第一步:一般是登录后自动生成以一个token或者通过一个单独的接口来生成token,然后保存在服务器的硬盘,一般保存在服务器的数据库。
第二步:后面的请求都必须带上token(请求头,参数里面都可以放token),然后和服务器的token对比实现鉴权。
token可能会被截取,所以进行加密。
四、加密
对称加密:DES,AES 可以解密
双钥加密:AES 可以解密
MD5、SHA1 不可以解密