前端必知必会HTTP请求系列(二)简单一点的HTTP协议

5次阅读

共计 2405 个字符,预计需要花费 7 分钟才能阅读完成。

http 协议用户客户端和服务器之间的通信
http 协议和 TCP/IP 协议族内的其他众多协议相同,用于客户端和服务器之间的通信。那么问题来个如果两台服务器之间一台服务器向另一台服务器进行接口请求那谁是客户端呢?所以这里的客户端和服务端是相对的概念,如果一端担任客户端的角色,另一端就需要担任服务器端的角色不是绝对的概念。
通过请求和响应的交换达成通信
http 协议中已经规定了请求是从客户端发出,最后由服务端响应这个请求并返回。下面来看一个请求中的报文,
GET /index.html HTTP/1.1
Host: baidu.cn
起始行的开头的 GET 表示请求访问服务器的类型,成为方法(method)对于前后端的同学最熟悉不过了。随后的字符串 index.html 指明了请求访问的资源对象。也叫请求的 URI,最后 HTTP/1.1 就是我们 http 的版本号,用来告诉客户端使用的 http 协议功能。
http 是不保存状态的协议
HTTP 是一种不保存状态,即无状态协议。HTTP 协议自身不对请求和响应之间的通信状态进行保存,也就是说 HTTP 这个级别。协议对于发送过的请求或者响应都不做持久化处理。
所以在使用 http 协议的时候,每当有新的请求发送时,就会有对应的新的响应产生,协议本身并不保留之前一切的请求或响应报文信息。这是为了更快的处理大量食物,确保协议的可伸缩性,而特意把 http 协议设计成如此简单的。但是随着 web 的发展,因为没有转态在某些业务场景下因为无状态导致业务变得棘手了,例如,现在的电商平台,即时他在别的页面进行浏览商品的时候我们也需要保持该用户的登录状态,所以为了实现这个需求,http 协议引入了 Cookie 技术。稍后会有详解。
请求 URI 定位资源
HTTP 协议使用 URI 定位互联网上的资源,正是应为 URI 的特定功能,在互联网上任意位置的资源能访问到。
告知服务器意图的 http 方法
1、GET: 获取资源 get 方法用来请求访问已被 URI 识别的资源,指定的资源经服务器端解析后返回响应内容。如果请求的是文本。那就保持原样返回。2、POST: 传输实体 POST 方法用来传输实体的主体。虽然用 GET 方法也可以传输实体的主体,但是一般不用 GET 方法进行传输,而是用 POST 方法。虽说 POST 和 GET 很相似。但是 POST 的主要目的不是获取响应的主题内容。3、PUT: 传输文件 PUT 方法用来传输文件,就像 FTP 协议的文件上传一样。要求在请求报文的主题中包含文件内容。然后保存到请求 URI 指定的位置去。4、HEAD: 获取报文首部 HEAD 方法和 GET 方法一样,只是不返回报文主体的部分。用于确认 URI 的有效性及更新日期等等。5、DELETE: 删除文件 DELET 方法用来删除文件,是与 PUT 相反的方法。DELET 方法安请求 URI 删除指定的资源。6、OPTIONS: 询问支持得方法 OPTIONS 方法用来查询针对 URI 指定的资源支持得方法。
持久连接节省通信量
在 HTTP 协议的初始版本中,没进行一次 HTTP 通行就要断开一次 TCP 链接。以当年的通信情况来说,因为都是些内容很小的文本传输,所以即使这样也没有多大问题。可随着 HTTP 的普及。文档中包含有大量的图片的情况多了起来。比如浏览器浏览一个包含多张图片的 HTML 页面时,在发送请求访问 HTML 页面资源的同时,也会请求 HTML 页面里面包含的其他资源,因此每次请求都会造成无谓的 TCP 连接建立和断开,增加通行量的开销。持久连接 为了解决上诉 TCP 连接的问题,HTTP/1.1 和一部分的 HTTP/1.0 想出了持久连接,也称为 HTTP keep-alive 的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接转态。HTTP/1.1 中,所有的连接默认都是持久连接,但是在 HTTP/1.0 中并没有标准化。虽然有一部分服务器通过非标准手段实现了持久化连接。但服务器端不一定能够支持持久化连接。毫无疑问,除了服务端,客户端也需要支持持久化连接。管线化 持久化连接使得多数请求以管线化方式发送成为可能。从前发送请求后需等待并受到响应。才能发送下一个请求。管线化技术出现后。不用等待亦可直接发送下一个请求。这样就能够做到同时并行发送多个请求。而不需要一个接一个地等待响应。
使用 Cookie 的状态管理
之前我们提过 HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理,不可否认,无状态协议当然有它的优点。由于不必保存状态,自然可以减少服务器的 CPU 及内存资源的消耗。从另一个侧面来说,也正是因为 HTTP 协议本身是非常的简单,所以才会被应用在各种场景。
为了解决这个问题,Cookie 出现了,Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段,通知客户端保存 Cookie, 下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 之后发送出去。服务器端发现客户端发送过来的 Cookie 后,回去检查究竟是从哪一个客户端发送来的请求,然后对比服务器上的记录,最后得到之前的转态信息。
前端必知必会 HTTP 请求系列(一)了解 Web 及网络基础 前端必知必会 HTTP 请求系列(二)简单一点的 HTTP 协议 前端必知必会 HTTP 请求系列(三)HTTP,报文内部的 HTTP 信息 前端必知必会 HTTP 请求系列(四)返回结果的 HTTP 状态码 前端必知必会 HTTP 请求系列(五)与 HTTP 协作的 web 服务器 前端必知必会 HTTP 请求系列(六)HTTP 的首部 前端必知必会 HTTP 请求系列(七)确保 Web 安全的 HTTPS 前端必知必会 HTTP 请求系列(八)确认访问用户身份的认证 前端必知必会 HTTP 请求系列(九)基于 HTTP 的功能追加协议 前端必知必会 HTTP 请求系列(十)构建 Web 内容的技术 前端必知必会 HTTP 请求系列(十一)Web 攻击技术 有什么问题可以到评论区留言,持续关注,不断更新!

正文完
 0