Android网络编程(二)-session、cookie、token

一、Session:

在Web开发中,session代表浏览器与服务器的一次会话过程,这个过程是连续的,也可以时断时续的;通常指从进入系统到退出系统之间所经历的时间。

由于Web的所使用的HTTP协议是无状态的,每一次请求之间都是彼此独立的。有的时候,我们需要在两个彼此独立的请求之间共享一些状态

二、Cookie:

cookie是浏览器存储在用户电脑上的一些数据(以文本文件的方式);每次发起请求时,浏览器都会将对应的cookie数据一起发送至服务器。

HTTP协议是无状态的,cookie就是用来保存服务器和客户端的交互状态

cookie生命周期:

未指定过期时间的cookie;当服务器创建一个cookie的时候没有指定对应的过期时间时,客户端会将这类cookie写入浏览器开辟的一块内存中,当关闭浏览器以后,这块内存也就被释放了,对应的cookie也就是结束了它的生命;

指定过期时间的cookie;当服务器创建一个cookie的时候指定了对应的过期时间时,当到达了过期时间时,对应的cookie就会被删除;

当浏览器中的cookie数量达到了限制时,那么浏览器就会按照某种策略删除一些旧的cookie,腾出空间来创建新的cookie;

当然了,我们也可以手动的人为删除cookie。

浏览器不会让cookie肆意的发展,它总会在需要的时刻出马,干掉一些cookie,结束它们的生命

各大浏览器都对cookie的总个数和总大小都有限制:

Session与cookie的区别:

cookie机制采用的是在客户端保持状态的方案;而Session机制采用的是在服务器端保持状态的方案。Cookie的作用主要是为了解决HTTP协议无状态的问题,而Session机制则是一种在客户端与服务器之间保持状态的解决方案。

Cookie使用起来很方便,使用cookie也能完成session的工作;但是使用cookie有一个很大的弊端,cookie中的所有数据在客户端可以被修改,数据非常容易被伪造,那么一些重要的数据就不能存放在cookie中了,而且如果cookie中数据字段太多会影响传输效率。为了解决这些问题,我们就需要使用session了,session中的数据是保留在服务器端的,相对来说更安全,同时也没有客户端到服务器端这个传输的问题。

三、Token


客户端请求服务器完成登录后,服务器会返回一个token,

token :用户名 + 密码+登录日期等一系列数据经过计算形成的加密串

下次客户端向服务器发起请求,在请求头中带上token,服务端收到token会反解出用户信息,然后判断登录是否过期。

cookie验证和token验证的区别:

token: njnex服务器负载均衡 它能通过redis做token验证,redis是一种NoSQL技术,这是一种基于内存的数据库。能做快速校验。

cookie:njnex不能做校验,需要均衡到服务器上读写数据库处理。

这里容易被恶意攻击。

因此token比cookie更高效更安全。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容