天天看点

接口基础cookie, session,token的区别

为什么要有session,cookie,token的出现?

答:是由于网络中http协议造成的,因为http本身是无状态协议,这样,无法确定你的本次请求和上次请求是不是你发送的。如果要进行类似论坛登陆相关的操作,就实现不了了。

cookie 机制:

cookie并不是虚无缥缈的东西,它只是一个存储方式是通过扩展http协议来实现的. 浏览器访问服务器的时候,服务器会在response header里添加指示浏览器生成cookie的规则,浏览器按照一定的规则在request header里生成cookie并发给服务器,

服务器校验规则,如果校验通过会一直保持会话,cookie机制采用的是在客户端保持状态的方案.

session 机制:

session机制采用的是在服务端保持状态的方案,把数据保存在服务器里而cookie 是把数据保存在客户端里,

服务器保存的数据会自动生成一个sessionID 也就是我们说的key给客户端, session ID 可以保存在cookie里,URL ,POST data里也行.

如果下次访问 客户端会把session ID 发给服务端进行匹配,如果校验通过会保持回话.

总结:

举个例子:

张三如果想取钱,可以通过 两个方式 1. cookie 2. session

1.如果想通过cookie 的方式 就是需要拿着存折 里面有详细的信息,余额和取款信息都可以看到

2.如果想通过session 的方式 就是拿着一个银行卡,里面有个卡号进行取钱,里面的信息进行了隐藏.

将登陆信息等重要信息存放为SESSION,这就是安全的问题.

其他信息如果需要保留,可以放在COOKIE中,

Token 机制:

有了sesion 和cookie 为什么也要有token 呢?

答: session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

考虑到减轻服务器性能方面.

**产生过程:**浏览器第一次访问服务器,根据传过来的唯一标识(比如userID),服务端会通过一些算法,如常用的HMAC-SHA256算法,然后加一个密钥,生成一个token,然后通过BASE64编码一下之后将这个token发送给客户端;客户端将token保存起来,下次请求时,带着token,服务器收到请求后,然后会用相同的算法和密钥去验证token,如果通过,执行业务操作,不通过,返回不通过信息.

解释session是空间换时间,而token是时间换空间?

1.session 直接拿sessionID 进行匹配,速度很快,但是token 需要加密解密再验证步骤,速度相对会更慢

2.token 不会再服务器保存数据,能做到真正无状态, 空间节省了不少.

举个例子:

方案 A :我发给你一张身份证,但只是一张写着身份证号码的纸片。你每次来办事,我去后台查一下你的 id 是不是有效。

方案 B :我发给你一张加密真正的身份证,以后你只要出示这张卡片,我就知道你一定是自己人。

就这么个差别。