HTTP 基础
在本节课中,我们将学习 HTTP 的基础知识。
HTTP 的基本原理
HTTP(超文本传输协议)是一种客户端-服务器协议,允许客户端和服务器通过网络使用请求/响应机制进行通信。它是一种应用层协议,依赖于 TCP/IP 提供服务。
注意:TCP(传输控制协议)是一种传输层协议,确保消息按发送顺序送达,无论是从客户端到服务器,还是从服务器到客户端。
什么是 HTTPS?
HTTPS 是 HTTP 的扩展,用于在网络中实现安全通信。在 HTTPS 中,通信协议通过 TLS 加密的 TCP 连接进行加密。
HTTP 的架构
以下是使用 HTTP 的 Web 应用架构的基本示意图。
如图所示:
客户端:客户端通过 HTTP 协议向服务器发送请求
服务器:服务器接收请求并处理,然后将请求资源的响应返回给客户端
HTTP 的基本特性
-
HTTP 是无连接的:每次客户端请求都被视为一个独立且唯一的连接。
-
HTTP 是无状态的,但不是无会话的。所谓无状态是指 HTTP 不保存任何关于客户端的信息。因此,在同一连接上连续发出的请求之间没有关联性。
-
HTTP 是可扩展/可定制的:只需客户端与服务器达成一致或建立约定,即可集成任何新功能。
一个简单的 HTTP 请求示例
我们使用 curl 命令发起一个简单的 HTTP 请求,并分析返回结果。
curl -iX GET https://reqres.in/api/users/1
请点击终端运行此命令,查看服务器的响应。
服务器的响应包含 HTTP 头部和消息体。
响应头部(键值对形式)
1HTTP/2 200 2date: Fri, 27 Mar 2020 05:04:49 GMT 3content-type: application/json; charset=utf-8 4content-length: 370 5set-cookie: __cfduid=da1cd20e010c26e64c1cabad561df2ba21585285489; 6............................... 7.................
- 第一行是
HTTP状态码,为200。 - 其中一个 键 是
content-type,对应的 值 是application/json; charset=utf-8。 - 另一个 键 是
set-cookie,对应的 值 是da1cd20e010c26e64c1cabad561df2ba21585285489。
注意:Cookie 是一种唯一标识符,用于跟踪用户在不同网页上的活动。例如,亚马逊通过 Cookie 来记录购物车中的商品。当你首次访问网站时,服务器会为客户端分配一个唯一标识号。一旦 Cookie 设置完成,客户端在后续请求中都会携带该 Cookie。这样,服务器就能识别请求来源,从而做出相应响应。
我们将在后续章节中深入学习 HTTP 头部内容。
响应消息体
1{"data":{"id":1,"email":"george.bluth@reqres.in","first_name":"George","last_name":"Bluth","avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg"},"ad":{"company":"StatusCode Weekly","url":"http://statuscode.org/","text":"A weekly newsletter focusing on software development, infrastructure, the server, performance, and the stack end of things."}}
HTTP 响应的第二部分是消息体,采用 JSON 格式。它是服务器返回的请求资源信息。在此例中,我们请求的是用户 ID 为 1 的详细信息(/api/users/1)。
现在你已经了解了 HTTP 的基本概念,下一课我们将学习各种 HTTP 方法。