登录态之浏览器与服务器交互

1,693 阅读5分钟

怎么才算登录态呢,接下来我们看看浏览器和服务器是怎么交互的~~~

一、浏览器

1.用户名、密码非空以及格式的校验

一般我们要求用户在设置密码的时候,得包括大小写字母、数字、或者特殊的字符,从而提高密码的复杂度,不容易被破译。

目的:

  • 进行提前校验是为了减少向服务器发送非必要的请求,从而减少服务器的压力。

  • 防止非正常用户进行恶意攻击服务器的代码,需要我们做一层安全的优化。

2.向服务器发送登录请求

1.MD5加密 所有的信息在传输的过程都是明文传输,所以对有些比较敏感的数据需要进行加密。

  • md5加密属于不可逆转加密,也是做安全优化的第一步,一般在服务器端会做二次加密,以防被攻破。

2.获取用户名和密码后,通过post请求,把信息发送给服务器。

我们对比一下POST和GET请求之间的区别:

  • 传递请求信息的方式不同: POST请求通过设置请求主体传递给服务器 ,而get请求通过问号传参来传递给服务器
  • 传递请求信息的大小不同: GET问号传参是基于URL来传递,由于不同的浏览器,对URL的长度限制也不同,所以GET相对传递给服务器的信息较少
  • 从缓存角度: GET会产生缓存(在请求相同的URL,浏览器不做处理,会从缓存中拿数据),所以一般要去掉缓存(通过HASH)以防前后端在一定时间内不一致
  • 从安全角度: POST请求较安全,get请求有可能存在安全隐患(URL劫持技术)

3.服务器返回信息

服务器把信息返回给客户端的时候,会把SID基于响应头Set-Cookie传递给客户端。浏览器会自动将服务器返回的SID种植在当前cookie中,此cookie不能被修改,过期时间和服务器的SESSION保存一致。以便再次请求携带该标识。

  • cookie类似浏览器和服务器之间的邮递员,通过cookie进行频繁的通信。
  • 每次浏览器和服务器通信都会把cookie携带过去
  • 种植的cookie有过期时间

对比一下cookie和Webstorage之间的区别

  • 大小限制: 一般浏览器允许一个源下cookie最多存储8kB(1024*8B),而localStorage允许存储最大的长度限制为5MB(5*102*1024B)一个字母就是一个字节,一个中文汉字占2字节
  • 兼容性: cookie兼容所有的浏览器,而localStorage是H5新增的,不兼容IE低版本浏览器
  • 稳定性: cookie有过期时间,除此之外一般等不到过期就会被用户清除,电脑上用的一下杀毒或者电脑管家等都会把cookie清除,这些操作不会影响到localStorage。
  • 在用户开启无痕浏览或者隐私模式,此时无法种植cookie,但是是可以设置localStorage的信息ctrl+shift+n

  • 活动能力: 浏览器中的cookie总是和服务器中的session之间相互传递信息,而localStorage只服务于浏览器。

4.退出登录做校验

当由于某种原因退出登录的时候,浏览器会再次向服务器发送请求,告知退出登录,服务器会把之前在SESSION中的SID和用户的信息清除掉,浏览器并弹出登录页面。登录态消失。浏览器和服务器通信结束。

二、服务器

1.服务器接收请求

浏览器通过发送post请求,在请求主体中携带用户名和密码,发送给服务器,从而服务器校验该用户在之前是否注册过。

2.服务器做响应的处理

把获取到的信息到数据库中进行查找匹配,看是否有符合条件的数据,作相应的处理,并返回给客户端浏览器。

  • 如果登录成功,记录登录态,在服务器端设置SESSION/ERDIS,在SESSION中存储登录用户的基本信息。
    • 服务器一旦设置SESSION,会创建一个和当前客户端的唯一连接标识SID.
    • 在服务器把信息返回给客户端的时候,会把SID基于响应头Set-Cookie传递给客户端。

  • 如果登录失败,将信息返回给客户端,我们给予处理,做注册提醒。

三、页面切换以及再次登录

1.通过校验登录态,呈现客户端的登录态以及其他页面信息

有俩种校验方式,来验证是否为该用户。

  • 客户端本地存储cookie

第一次登录成功后,在本地浏览器的cookie存储了用户登录的基本信息和登录态的标识。 关闭当前浏览器又再次进入该项目index页面的时候或者进入到当前项目其他页面的时候,首先查看一下本地是否存在这个标识,如果存在则标识登录了,直接返回给相应的信息

  • 服务器存储登录态的信息

客户端再次向服务器发送请求的时候,浏览器会把cookie中的sid通过请求头中SID传递给服务器,服务器接收到SID后 再次到SESSION中查找匹配。在cookie被清除的时候,登录态都会失败,需要重新登录。再次建立当前浏览器和服务器之间的唯一标识SID。 客户端想知道该用户是否登录,需要向服务器发送请求进行校验。只要不是用户正常退出登录和其他方式的退出,在浏览器本地cookie和服务器SESSION中SID的过期时间还没有过,就会自动登录。

2.再次登录

退出后再次登录,会再次开启浏览器和服务器之间的通信。

总结

登录态:所谓登录态就是浏览器和服务器之间通信的唯一标识。