Cookie和Session

HTTP

定义

文本传输协议(HTTP)是一个用于传输超媒体文档(例如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。HTTP 遵循经典的客户端 - 服务端模型,客户端打开一个连接以发出请求,然后等待直到收到服务器端响应。HTTP 是无状态协议,这意味着服务器不会在两个请求之间保留任何数据(状态)。尽管通常基于 TCP/IP 层,但它可以在任何可靠的传输层上使用,也就是说,该协议不会像 UDP 那样静默的丢失消息。RUDP——作为 UDP 的可靠化升级版本——是一种合适的替代选择。

HTTP的基本性质

- HTTP是简单的

虽然下一代 HTTP/2 协议将 HTTP 消息封装到了帧(frame)中,HTTP 大体上还是被设计得简单易读。HTTP 报文能够被人读懂,还允许简单测试,降低了门槛,对新人很友好。

- HTTP是可扩展的

只要服务端和客户端就新标头达成语义一致,新功能就可以被轻松加入进来。

- HTTP是无状态的,有会话的

在同一个连接中,两个执行成功的请求之间是没有关系的。这就带来了一个问题,用户没有办法在同一个网站中进行连续的交互,比如在一个电商网站里,用户把某个商品加入到购物车,切换一个页面后再次添加了商品,这两次添加商品的请求之间没有关联,浏览器无法知道用户最终选择了哪些商品。而使用 HTTP 的标头扩展,HTTP Cookie 就可以解决这个问题。把 Cookie 添加到标头中,创建一个会话让每次请求都能共享相同的上下文信息,达成相同的状态。

注意,HTTP 本质是无状态的,使用 Cookie 可以创建有状态的会话。

Cookie

- 是服务器发送到浏览器,并保存在浏览器端的一小块数据。

- 浏览器下次访问该服务器时,会自动携带块该数据,将其发送给服务器。

- 通常,它用于告知服务端两个请求是否来自同一浏览器——如保持用户的登录状态。Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能。

流程:

浏览器发送请求,服务器创建一个cookie并且给浏览器发送,浏览器保存cookie,可以访问其中的数据。

Cookie和Session_第1张图片

 

Session

- 是JavaEE的标准,用于在服务端记录客户端信息。

- 数据存放在服务端更加安全,但是也会增加服务端的内存压力

流程:

浏览器发送请求,服务器创建一个session并且给浏览器发送一个带有sessionId的cookie,浏览器可以通过这个id访问到存储在session中的数据

Cookie和Session_第2张图片

 

你可能感兴趣的:(前端学习记录,服务器,前端,运维)