Web的工作原理可以分为以下几个步骤:
-
-
建立连接:Web浏览器与Web服务器之间建立TCP/IP连接,以便传输数据。
-
发送HTTP请求:Web浏览器向Web服务器发送HTTP请求,请求所需的Web资源。
-
接收HTTP响应:Web服务器接收HTTP请求,并通过HTTP响应将Web资源发送给Web浏览器。
-
渲染Web页面:Web浏览器接收HTTP响应,并根据所收到的数据渲染Web页面,以便呈现给用户。
-
关闭连接:Web浏览器和Web服务器之间的TCP/IP连接被关闭。
什么是 HTTP 请求?
HTTP(超文本传输协议)是一种用于 Web 服务器和客户端(浏览器)之间通信以通过 Internet 传输数据的协议。 HTTP 请求是客户端向服务器发送的请求特定资源(如网页、图像或视频)的消息。 HTTP 请求方法决定了请求的类型,例如 GET、POST、PUT、DELETE、HEAD、OPTIONS、CONNECT、TRACE 等。
HTTP请求的结构:
HTTP 请求由请求行、标头和可选的消息正文组成。
请求行包括 HTTP 方法、所请求资源的 URL(统一资源定位符)以及所使用的 HTTP 版本。
标头提供有关请求的其他信息,例如用户代理、请求的内容类型和可接受的编码格式。
消息正文是可选的,包含数据,例如表单数据或 JSON 。
HTTP请求方法:
HTTP 定义了各种请求方法,指示要对 URL 标识的资源执行的操作。最常见的 HTTP 请求方法是:
-
GET:从服务器获取资源,例如网页或图像。
-
POST:将数据提交给服务器进行处理,例如表单提交或文件上传。
-
PUT:用新数据更新服务器上的现有资源。
-
DELETE:从服务器中删除资源。
-
HEAD:检索资源的标头,不带消息正文。
-
OPTIONS:用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
-
CONNECT:建立到资源的网络连接,例如代理服务器。
-
TRACE:回显接收到的请求消息,用于调试目的。 HTTP 标头:
HTTP 标头用于提供有关 HTTP 请求或响应的附加信息。它们是由冒号分隔的键值对,包含在请求或响应消息中。 Header有多种类型,例如通用Header、请求Header、响应Header和实体Header。一些常见的标头包括:
-
User-Agent:向访问网站提供你所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识
-
Accept:指定客户端接受的内容类型。
-
Content-Type:指定请求或响应消息中内容的类型。
-
Content-Length:指定消息体的长度,以字节为单位。
-
Cache-Control:指定响应的缓存指令,例如 max-age 和 must-reva lidate。
-
Authorization:指定请求的身份验证凭据。 HTTP 消息体body:
HTTP 消息正文是 HTTP 请求或响应的可选部分,包含各种格式的数据,例如 HTML、JSON、XML 或二进制数据。在请求中,消息正文包含要发送到服务器的数据,例如表单数据或文件上传。在响应中,消息正文包含所请求资源的实际内容,例如 HTML 页面或图像。
总之,了解 http 请求和响应的基础知识对于 Web 开发以及 Web 服务器和客户端之间的通信至关重要。通过了解如何构建 HTTP 请求、各种请求方法、标头的使用以及可选的消息正文,开发人员可以有效地与服务器通信并创建健壮的 Web 应用程序。
什么是 HTTP 响应?
HTTP响应是由服务器向客户发送的对请求的响应。 HTTP 响应包含以下组件:
-
HTTP版本
-
状态码
-
状态消息
-
响应头
-
响应体
1、HTTP版本
响应中使用的 HTTP 版本在响应的第一行中指定。例如:
HTTP/1.1 200 OK
这指定使用 HTTP 版本 1.1 发送响应。
2、状态码
状态代码表示所请求操作的结果。 HTTP 定义了五类状态码:
-
信息提示 (100-199)
-
成功 (200-299)
-
重定向 (300-399)
-
客户端错误 (400-499)
-
服务器错误 (500-599) 每个状态码都是一个三位数字,它包含在HTTP版本之后的响应的第一行中。例如:
HTTP/1.1 200 OK
这表明操作成功,请求的资源包含在响应正文中。
3、状态信息
状态消息是对状态代码的描述。它包含在状态代码之后的响应的第一行中。例如:
HTTP/1.1 404 Not Found
这表示未找到请求的资源,状态消息提供了问题的简短描述。
4、响应头
响应标头包含有关响应的元数据。它们类似于请求标头,但提供有关响应而不是请求的信息。响应标头可以包括有关服务器、缓存策略、cookie 等的信息。
响应标头包含在第一行之后的响应中。每个标头都是一个由冒号分隔的键值对。例如:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1274
Server: Apache
在此示例中,响应包含三个标头:Content-Type、Content-Length 和 Server。
5、响应体
响应正文包含请求的资源或错误消息,如果找不到请求的资源。响应正文的格式取决于响应中包含的 Content-Type 标头。例如,如果 Content-Type 标头设置为“text/html”,则响应正文应包含 HTML 代码。
响应主体包含在响应标头之后的响应中。如果响应主体很大,它可能会被拆分成多个数据包。
HTTP 请求和响应的技术点
HTTP 请求和响应有几个开发人员需要注意的技术点。这些技术点决定了请求和响应如何在客户端和服务器之间构建和传输。
1、请求和响应标头
HTTP 请求和响应包含提供有关请求或响应的附加信息的标头。标头是在消息标头中发送的键值对,它们用于传达有关请求或响应的元数据。 Headers 有多种类型,包括通用 Headers、请求 Headers、响应 Headers 和实体 Headers。
通用标头适用于请求和响应,并提供有关整个消息的信息,例如消息格式、发送日期和时间以及消息是否可以缓存。
请求标头用于提供有关发出请求的客户端的信息,例如用户代理(用于访问服务器的软件)、接受的内容类型以及用于压缩消息正文的编码。
响应头提供了服务器对客户端请求的响应信息,如响应的内容类型、消息体的长度、响应是否可以缓存等。
实体标头用于提供有关消息正文的信息,例如内容长度和内容编码。
2、HTTP 方法
HTTP 请求使用一组方法来指定要对 URL 中标识的资源执行的所需操作。最常见的 HTTP 方法是 GET、POST、PUT、DELETE 和 HEAD。
-
GET:用于从服务器检索数据。
-
POST:用于向服务器发送数据以创建或更新资源。
-
PUT:用于更新服务器上的现有资源。
-
DELETE:用于从服务器中删除资源。
-
HEAD:用于检索资源的标头,而不是消息正文。 HTTP 状态码 HTTP 响应包括指示请求状态的状态代码。有五类状态代码,每类都有自己的一组代码:
? 1xx: 信息 - 表示服务器已收