cookie
1.cookie就是键值对
2.cookie保存在客户端
3.服务端可以对cookie进行操作,添加、删除、查询
4.cookie是一种技术,是客户端和服务端交流信息的一种渠道,一种手段,一种方式。
5.在cookie中保存一些简单的信息,用户时谁
6.安全性不高,任何人都能查看
7.每次浏览器访问的时候,都会发送cookie信息
8.cookie不能存储用户的密码,可以存储用户的行为习惯等
9.cookie和get、post一样都可以传输数据,只是cookie可以被禁用,而get、post一定可以使用
10.cookie具有不可跨域性,即不可以跨网站访问,也不可跨网站修改
11.cookie在设置键值对之外,还可以设置属性,最大时间等等
12.cookie的其他属性都不能被服务端读取,这个只属于浏览器
13.相同的二级域名和不同的三级域名(www.feiniaomuyu.com和aaa.feiniaomuyu.com)也是不能够互通cookie的,但是可以通过设置domain来确保互通cookie
14.domain是决定域名的,path是决定url的路径。不同的path也只能获取各自的cookie。设置为"/"表示,谁都能获取这个cookie
15.secure表示只会在https的情况下才发送cookie,但是并不会对cookie加密
session
1.session存储在服务端,客户端不存在session这个概念
2.session是一套逻辑,是保障信息传输安全的一种自定义的加密措施
3.session表示的是会话
4.session利用了cookie来传输信息。cookie不再保存用户的信息(用户名,密码)而是保存一个sessionId,这个sessionId是用户的唯一识别码。客户端若是第一次访问,则服务器会给客户端发送一个sessionId,来表明这是哪个用户。同时,该sessionId也会记录在服务端。如果不是第一次登陆,则客户端会带着存储在cooike的sessionId请求服务端,此时,服务端就可以识别出这是哪个用户,随后就可以根据用户来定制内容。
5.session相对cooike安全一点,对于服务器的压力大。
6.session也有各种属性可以设置
7.当cookie被禁止时,可以采用url重写的技术。类似于重定向,而重定向的地址为原地址加session。这样就可以保存session了,只不过,本次session的周期只有当浏览器关闭
8.sessionId会被保存到cooike中。由于cookie可以设置超时时间,无需登录的网站,我们可以设置为浏览器关闭则session失效,此时的cookie保存在内存中。存在登录的情况,我们可以设置为永久,或较长时间,将其保存在本地文件中
9.session解决了2次http请求之间的关联问题
10.这个session也不一定就是存储在cookie中的,在浏览器中,当然是存储在cookie中。而其他客户端,就有各自的存储方式了,可以存储在文件中。
token
1.令牌
2.组成:uid,时间戳,签名(多种组成)
3.在首次登陆后,会产生一个token,这个token会在服务端保存,也会返回给客户端。再次登陆时,比较这个token就可以知道登陆情况了。
4.sessonId只是提供了一个标识,只是认证这个客户端的。完全不涉及授权和认证这个内容。而token包含了uid,是涉及用户的。token包含了认证的手段,是一个比较笼统的概念。其中包含了更多的内容。
json web token(jwt)
1.分为3个部分,Header,Payload,Signature
2.Header表示头部信息,包含了token类型和加密算法。采用Base64编码格式(编码格式,不是加密算法,可逆)
3.Payload表示负载,包含用户非敏感信息,uid,时间等等。采用Base64编码格式。
4.Signature表示签名,签名是不可逆的,签名可以验证Header和Payload中的信息是否正确。(编码后的Header+编码后的Payload+秘钥) * Header中的加密算法。
5.由于Header和Payload都是可逆的,所以不应该存储机密信息,只能存储普通信息
token与session的对比
1.两者没有冲突
2.token比session更近了一步。session只是生产了一个全局唯一标识码给客户端,这个标识码本身没有其他信息。所以需要频繁的查询数据库,导致服务器压力,而且在分布式的情况下,需要同步session数据库。
3.而token也是一个全局唯一标识,但是他本身存储了很多的信息。所以在服务端接受到这个token后,无需与数据库对比,只要解析这个token就可以知道信息了。
4中方式对比:
1.cookie只是一种技术手段,存储在客户端
2.session存储在服务端,没有权限这种概念。
3.token,保存在客户端和服务端,每次请求验证
4.jwt,保存在客户端,通过算法验证,无需访问数据库