关于HTTP补学
一、HTTP能干什么
通过下图能够直观的看出:“交换数据 ”
二、HTTP请求例子
- 一个 HTTP 方法,通常是由一个动词,像 GET、POST 等,或者一个名词,像 OPTIONS、HEAD 等,来定义客户端执行的动作。典型场景有:客户端意图抓取某个资源(使用
GET
);发送 HTML 表单的参数值(使用POST
);以及其他情况下需要的那些其他操作。- 要获取的那个资源的路径——去除了当前上下文中显而易见的信息之后的 URL,比如说,它不包括协议(
http://
)、域名(这里的域名是developer.mozilla.org
),或是 TCP 的端口(这里的端口是80
)。- HTTP 协议版本号。
- 为服务端表达其他信息的可选标头。
- 请求体(body),类似于响应中的请求体,一些像 POST 这样的方法,请求体内包含需要了发送的资源。
- HTTP 协议版本号。
- 一个状态码(status code),来指明对应请求已成功执行或是没有,以及相应的原因。
- 一个状态信息,这个信息是一个不权威、简短的状态码描述
- HTTP 标头,与请求标头类似。
- 可选项,一个包含了被获取资源的主体。
三、请求
HTTP 定义了一组请求方法用来指定对目标资源的行为。它们一般是名词,但这些请求方法有时会被叫做 HTTP 动词。最常用的请求方法是 GET
和 POST
:
- GET 方法请求指定的资源。
GET
请求应该只被用于获取数据。 - POST 方法向服务器发送数据,因此会改变服务器状态。这个方法常在 HTML 表单中使用。
四、链接管理
HTTP 的传输协议主要依赖于 TCP 来提供从客户端到服务器端之间的连接。在早期,HTTP 使用一个简单的模型来处理这样的连接。这些连接的生命周期是短暂的:每发起一个请求时都会创建一个新的连接,并在收到应答时立即关闭。
4.1、短链接
4.2、长链接
在 HTTP/1.1 之前。或者,这被称之为一个 keep-alive 连接。
4.3、流水线
五、HTTP缓存
HTTP 缓存会存储与请求关联的响应,并将存储的响应复用于后续请求。
缓存分为:私有缓存和共享缓存
私有缓存是绑定到特定客户端的缓存——通常是浏览器缓存。
共享缓存:代理缓存和托管缓存。
代理缓存:除了访问控制的功能外,一些代理还实现了缓存以减少网络流量 ——目前不需要关注代理缓存,
托管缓存:托管缓存由服务开发人员明确部署,以降低源服务器负载并有效地交付内容。示例包括反向代理、CDN 和 service worker 与缓存 API 的组合。
Cookie
HTTP Cookie(也叫 Web Cookie 或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据。浏览器会存储 cookie 并在下次向同一服务器再发起请求时携带并发送到服务器上。
HTTP会话
在像 HTTP 这样的客户端——服务器(Client-Server)协议中,会话分为三个阶段:
- 客户端建立一条 TCP 连接(如果传输层不是 TCP,也可以是其他适合的连接)。
- 客户端发送请求并等待应答。
- 服务器处理请求并送回应答,回应包括一个状态码和对应的数据。
从 HTTP/1.1 开始,连接在完成第三阶段后不再关闭,客户端可以再次发起新的请求。这意味着第二步和第三步可以连续进行数次。
引用:HTTP