美文网首页
网络面试-ox09 http是如何维持用户的状态?

网络面试-ox09 http是如何维持用户的状态?

作者: helinyu | 来源:发表于2022-11-15 18:39 被阅读0次

http是无状态、无连接的特性

  1. 无连接 —— 使用了keep-alive 来处理
  2. 无状态 —— 使用了Cookie/Session 来维持

解决无状态的方案 2 种

  1. 基于Session实现的会话保持

    <1> 在客户端第一次向服务器发送 HTTP 请求后,服务器会创建一个 Session 对象并将客户端的身份信息以键值对的形式存储下来;

    <2> 然后分配一个会话标识(SessionId)给客户端,这个会话标识一般保存在客户端 Cookie 中,

    <3> 之后每次该浏览器发送 HTTP 请求都会带上 Cookie 中的 SessionId 到服务器,服务器根据会话标识就可以将之前的状态信息与会话联系起来,从而实现会话保持。

优点:安全性高,因为状态信息保存在服务器端。

缺点::由于大型网站往往采用的是分布式服务器,浏览器发送的 HTTP 请求一般要先通过负载均衡器才能到达具体的后台服务器,倘若同一个浏览器两次 HTTP 请求分别落在不同的服务器上时,基于 Session 的方法就不能实现会话保持了。
解决方法:采用中间件,例如 Redis,我们通过将 Session 的信息存储在 Redis 中,使得每个服务器都可以访问到之前的状态信息】

  1. 基于Cookie实现的会话保持

    <1> 当服务器发送响应消息时,在 HTTP 响应头中设置 Set-Cookie 字段,用来存储客户端的状态信息。

    <2> 客户端解析出 HTTP 响应头中的字段信息,并根据其生命周期创建不同的 Cookie,这样一来每次浏览器发送 HTTP 请求的时候都会带上 Cookie 字段,从而实现状态保持。

    <3> 基于 Cookie 的会话保持与基于 Session 实现的会话保持最主要的区别是前者完全将会话状态信息存储在浏览器 Cookie 中。

优点:服务器不用保存状态信息, 减轻服务器存储压力,同时便于服务端做水平拓展。

缺点:该方式不够安全,因为状态信息存储在客户端,这意味着不能在会话中保存机密数据。除此之外,浏览器每次发起 HTTP 请求时都需要发送额外的 Cookie 到服务器端,会占用更多带宽。

  1. Cookie 被禁用了怎么办?

通过重写URL的方式将会话标识放在URL的参数里,也可以实现会话保持。

总结:

1)基于Session保存状态,返回给客户端sessionId,每次请求带上就行

2)基于Cookie保持状态,这样每次都是带上cookie状态参数

3)Cookie 被禁用,通过重写URL方式将标识放在URL的参数里面。



公众号:技术小难

简书

博客园 链接需要替换

CSDN

知乎

掘金

segmentfault

本文由mdnice多平台发布

相关文章

  • 网络面试-ox09 http是如何维持用户的状态?

    http是无状态、无连接的特性无连接 —— 使用了keep-alive 来处理无状态 —— 使用了Cookie/S...

  • 2019 iOS-----网络相关之Cookie和Session

    一、Cookie 2019 iOS面试题-----网络相关之HTTP协议这里有说到,HTTP协议是无状态的,服务器...

  • iOS | 面试 - 网络

    iOS | 面试知识整理 - 网络相关 (七) 1.如何理解HTTP? HTTP本质上是一种协议,全称是Hyper...

  • 面试 -- 网络 HTTP

    面试 -- 网络 HTTP 现在面试门槛越来越高,很多开发者对于网络知识这块了解的不是很多,遇到这些面试题会手足无...

  • 面试 -- 网络 HTTP

    现在面试门槛越来越高,很多开发者对于网络知识这块了解的不是很多,遇到这些面试题会手足无措。本篇文章知识主要集中在 ...

  • 面试题

    其他知识点: http协议面试: http定义: 什么是Http无状态协议,怎么解决Http协议无状态协议1.无状...

  • http网络状态码

    一些常见HTTP状态码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 ...

  • iOS--检测网络状态,获取运营商,获取WIFI信号强度

    在APP中,有时候需要对用户设备的网络状态进行实时监控,让用户了解自己的网络状态,根据用户的网络状态进行智能处理,...

  • Cookie&Token

    前言 http是无状态协议,需要cookie存储用户登录状态。cookie的工作机制是用户识别及状态管理。 服务器...

  • 计算机网络基础/数据库/Linux/编程

    BAT面试题复习 http协议 http协议是无状态无连接; 无状态:指的是http协议无法保存客户机的信息,比如...

网友评论

      本文标题:网络面试-ox09 http是如何维持用户的状态?

      本文链接:https://www.haomeiwen.com/subject/xtmjxdtx.html