Logo
Section 1 / 13

HTTP 基础

在本节课中,我们将学习 HTTP 的基础知识。

导入

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

请点击终端运行此命令,查看服务器的响应。

Terminal

服务器的响应包含 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 方法。

关于API和Web服务

HTTP 方法