如何理解 HTTP 协议是无状态的?Session 和 Cookie 有什么联系和区别?分布式环境下Session怎么处理?客户端无法使用Cookie怎么办?
  G1PV9Utmq6En 2023年11月02日 22 0

一、如何理解 HTTP 协议是无状态的?

无状态是指无客户端状态,就是HTTP协议中服务端不会保存客户端的任何信息。

比如当浏览器第一次发送请求给服务器时,服务器响应了,如果同个浏览器发起第二次请求给服务器时它还是会响应,但是服务器不知道你就是刚才发送请求的服务器。

那么浏览器怎么记录状态呢?

两个方法:Cookie和Session。

二、Cookie 和 Session 有什么联系和区别?

2.1Cookie

Cookie是保存在客户端的一小块文本串数据。

客户端向服务器发起请求时,服务端会向客户端发送一个Cookie,客户端就把Cookie保存起来,在客户端下次向同一服务端发送请求时,Cookie被携带发送到服务器,服务端可以根据这个Cookie判断用户的身份和状态。

2.2Session

Session指的是服务器和客户端一次会话过程中另一种记录客户状态的机制。

不同的是Cookie是保存在客户端,而Session保存在服务器上。

客户端浏览器访问服务器时,服务器把客户端信息以某种形式记录在服务器上,这就是Session。客户端再次访问服务器上服务器从Session中查找用户状态。

如何理解 HTTP 协议是无状态的?Session 和 Cookie 有什么联系和区别?分布式环境下Session怎么处理?客户端无法使用Cookie怎么办?_服务端

2.3Cookie和Session有什么不同

2.3.1存储位置不同

Cookie保存在客户端,Session保存在服务端;

2.3.2存储数据类型不同

Cookie只能保存ASCII,Session能保存任意数类型。

一般情况下可以在Session中保存一些常用变量,例如UserId等。

2.3.3有效期不同

Cookie可设置为长时间保持,比如经常使用的默认登录功能;

Session一般有效期较短,客户但关闭或者Session超时都会失效;

2.3.4隐私策略不同

Cookie存储在客户端,比较容易被非法获取,早期有人将用户的登录名和密码存储在Cookie中导致信息被窃取;

Session存储在服务端,安全性能相对较好。

2.3.5存储大小不同

单个Cookie保存数据不超过4k;

Session可存储数据远高于Cookie。

2.4Cookie和Session有什么关联

可以使用Cookie记录Session的标识。

如何理解 HTTP 协议是无状态的?Session 和 Cookie 有什么联系和区别?分布式环境下Session怎么处理?客户端无法使用Cookie怎么办?_客户端_02

用户第一次请求服务器时,服务器根据用户提交的信息,创建对应的 Session,请求返回时将此 Session 的唯一标识信息 SessionID 返回给浏览器,浏览器接收到服务器返回的 SessionID 信息后,会将此信息存入 Cookie 中,同时 Cookie 记录此 SessionID 是属于哪个域名。

当用户第二次访问服务器时,请求会自动判断此域名下是否存在 Cookie 信息,如果存在,则自动将 Cookie 信息也发送给服务端,服务端会从 Cookie 中获取SessionID,再根据 SessionID 查找对应的 Session 信息,如果没有找到,说明用户没有登录或者登录失效,如果找到 Session 证明用户已经登录可执行后面操作。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
G1PV9Utmq6En