当前位置:首页 > 编程语言 > 正文内容

什么是HTTP请求?

a811625533年前 (2023-05-05)编程语言17

当你访问一个网站时,你的浏览器在后台向其服务器发出几十或几百个请求。服务器响应这些请求,提供网站需要加载的所有数据和文件。然而,真正的过程比这更复杂。

如果你想提高你的网站性能,了解HTTP请求是如何工作的是至关重要的。其中一些优化措施涉及。从本质上讲,你正在优化你的服务器,以便更好地响应HTTP请求。

在这篇文章中,我们将仔细研究HTTP请求如何工作。我们还将向你展示HTTP请求的结构,以及如何在必要时对其进行故障排除。

什么是HTTP?

HTTP是一种协议。事实上,这个首字母缩写代表了超文本传输协议。该协议规定了客户端和服务器之间的请求和响应的结构和语言。客户端通常是 *** 浏览器,但它们可以有多种形式,如搜索引擎机器人

当你通过浏览器访问网站时,整个连接是通过HTTP进行的。该协议使你能够接收数据,包括文本、图像、视频、样式表、脚本等等。

自90年代初以来,HTTP一直是 *** 的骨干之一。在过去的几十年里,它不断发展,变得更加高效。2010年代后半期,,它使客户端能够同时加载资源,而不是异步。这导致了巨大的性能提升。

在2022年,都在使用HTTP/2。现在,已经有关于采用的讨论,这也被称为HTTP-over-QUIC。HTTP/3与UDP协议一起工作,这使它比传统的TCP连接(也就是HTTP和HTTP/2所使用的)更具优势。

什么是HTTP请求(以及它是如何工作的)?

把HTTP请求看作是你的浏览器与服务器的连接,并要求获得一个特定的资源或向其发送数据。有几种类型的HTTP请求 *** ,它们完全改变了你从服务器得到的响应类型。最常见的有以下几种:

  1. GET -这是迄今为止最经常使用的HTTP请求 *** 。一个GET请求要求服务器提供一个特定的信息或资源。当你连接到一个网站时,你的浏览器通常会发送几个GET请求,以接收它所需要的数据,从而加载页面。
  2. HEAD -通过HEAD请求,你只收到你想要加载的页面的。你可以使用这种类型的HTTP请求,在你使用GET下载一个文件之前,了解它的大小。
  3. POst -当你的浏览器需要向服务器发送数据时,它就会使用POST HTTP请求 *** 。例如,如果你在一个网站上填写了一个联系表并提交,你就使用了POST请求,这样服务器就会收到这些信息。
  4. PUT -PUT请求在功能上与POST *** 相似。然而,你使用PUT请求来更新终端服务器上已经存在的信息,而不是提交数据。

还有一些其他类型的HTTP请求你可以使用,包括DELETE、PATCH和OPTIONS *** 。然而,它们在日常使用中相对不常见。

提交一个HTTP请求涉及到以特定的格式向接收服务器发送一个消息。服务器返回一个响应,而客户端则采取相应的行动。例如,它可以加载资源或重新引导你到另一个页面。

当你得到一个HTTP错误时,通常是因为服务器不能满足你的请求。你得到的错误代码应该说明原因。HTTP错误的一些最常见的原因包括无法连接到服务器并找到所请求的资源。

HTTP请求和响应结构的介绍

HTTP请求和响应有着相似的结构。如果你想通过分析HTTP请求和响应来了解,那么了解这些结构就很重要。

一般来说,HTTP请求被分为三个部分。让我们仔细看看每一个部分。

HTTP请求行

每个HTTP请求都以一行开始,表明你使用的是什么类型的 *** 和HTTP协议的版本。例如,一个HTTP GET请求的开头可以是这样的:

GET /XXX HTTP/1.1

在这种情况下,GET *** 后面的 “XXX” 字样表示你要接收的文件。

HTTP响应的开始部分重新重申了双方使用的协议版本。它还包括一个HTTP代码,与响应的状态相对应。

如果你访问一个网站并成功加载,你会看到一个2XX的HTTP成功信息:

HTTP/1.1 200 OK

如果资源因任何原因无法加载,HTTP响应的这一部分将显示错误代码。如果服务器找不到这个页面,你会看到一个类似这样的响应头:

HTTP/1.1 400 OK

如果你了解请求 *** 和,那么起跑线就能准确地告诉你客户端和服务器之间正在进行什么样的交易。总的来说,这是请求中最简单的部分,可以理解。

请求标头

请求头紧随请求行之后,它们提供了关于交易的额外信息。头部指定了关于主机的信息,终端客户使用的 *** 服务器软件,客户的用户 *** 是什么,以及更多。

下面是一个HTTP请求标头的样子:

Host: website.com
User-Agent: Chrome/5.0 (Windows 10)
Accept-Language: en-US
Accept-Encoding: gzip, deflate
Connection: keep-alive

这些只是你可以使用的的一些例子。下面是该标头中每一行的含义:

  • Host: 这是你发出请求的服务器的IP或URL。
  • User-agent: 这个参数包含有关客户端及其操作系统(OS)的信息。通常情况下,它概述了你所使用的浏览器及其版本。
  • Accept-language: 这一行告诉服务器客户喜欢什么语言,以防你请求的文件有多个版本。
  • Accept-encoding: 这一行表示客户端可以处理的编码或压缩类型。
  • Connection: 这个参数告诉服务器是否保持连接状态或为其设置超时。如果连接在完成请求前超时,你会收到一个错误。

让我们把请求行和标头文件放在一起,以了解你需要使用的整体结构:

GET /XXX HTTP/1.1
Host: website.com
User-Agent: Chrome/5.0 (Windows 10)
Accept-Language: en-US
Accept-Encoding: gzip, deflate
Connection: keep-alive

在上面的例子中,你正在向website.com主机提交一个GET请求,以获取一个特定的资源。现在,让我们看看响应中的头像是怎样的:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2022 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2022 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed

响应头从第二行开始,它包括连接的日期和关于主机使用什么 *** 服务器和操作系统的信息。如果你请求的是一个文件,头也会显示它的最后修改日期,文件有多长,以及你处理的是什么类型的内容。最后一行告诉你,由于请求已经完成,连接已经关闭。

标题中的信息和参数可能会有所不同,这取决于你所做的是什么样的请求。然而,整体结构仍然是相同的。

HTTP报文主题

报文主题是HTTP请求中最直接的部分。它包含了你要发送或接收的数据,这取决于你所使用的请求 *** 。

如果你用GET *** 请求一个HTML文件,你可能会收到一个结构如下的响应:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2022 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2022 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed
<!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”>

文件的其余部分在这里

HTTP请求或响应的主体是用一个空行与标头分开的。我们在上面的例子中没有包括一个完整的HTML文件,以避免混淆。

如何监控和排除HTTP请求的故障

有几种 *** 可以监测网站上的HTTP请求,例如使用。这些工具可以让你监控网站上的 “transactions”,如PHP任务、HTTP错误、数据库请求等等。

如果你是Kinsta的用户,你可以使用一个内置的APM工具,你可以从上启用。可以让你检查你的网站正在接收哪些类型的外部HTTP请求,并监控它们的状态:

MyKinsta

它还能让你监测反复出现的HTTP错误,这在排除网站故障时很方便。如果你在网站中看到一个HTTP状态错误,你可以启用Kinsta APM,复制这个错误,并从请求中获取细节。

APM工具还可以帮助你识别,这应该是相当容易发现的,因为你会看到一连串的HTTP请求。知道你是在处理DDoS攻击还是流量激增,将有助于你想出如何处理这种情况。

小结

了解什么是HTTP请求以及它们是如何工作的,可以帮助你解决网站的问题。当你遇到HTTP错误时,这意味着服务器无法满足客户的请求。如果你知道那个请求是什么,并理解HTTP响应中的错误代码,你就有足够的信息来解决问题。

要了解一个HTTP请求,你就需要知道它可以使用哪些 *** 。此外,你还需要知道HTTP请求和响应的结构,并了解不同的HTTP状态代码。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/8003.html

分享给朋友:

“什么是HTTP请求?” 的相关文章

宝塔面板教程之不同环境安装篇

宝塔面板教程之不同环境安装篇

Linux面板环境安装,主要支持LNMP和LAMP、Tomcat、node.js。不过对于大部分站长来说,主要是LNMP和LAMP两个环境的安装。 LNMP和LAMP两个环境的最大区别是,前者采用Nginx作为Web服务器,后者则采用Apache作为Web服务器。(选择哪个作为您的Web服务器,可...

宝塔面板教程之主界面管理篇

宝塔面板教程之主界面管理篇

本章节主要是对宝塔面板的主界面的各个版本进行一个简单的说明。 宝塔面板主界面主要包括:服务器操作系统、服务器状态、站点信息、软件管理及网络流量几个部分。 Windows面板有部分功能未实现,其余部分与Linux面板同步。 系统操作...

宝塔面板教程之网站管理篇

宝塔面板教程之网站管理篇

宝塔面板中的网站管理是非常重要的一部分,也是站长经常需要使用到的功能模块。网站管理,主要用于管理和创建WEB站点。如果您是宝塔面板的使用用户,应该对此模块有充分的了解,以便于您更高效地管理网站。 宝塔面板网站管理模块包括:添加新网站、修改默认页、设置默认站点、站点列表、站点的运行与停止、备份站点、...

宝塔面板教程之面板设置篇

宝塔面板教程之面板设置篇

宝塔面板设置主要涉及的是宝塔控制后台自身的参数,包括诸如面板的开关、自动更新及SSL、面板端口设置等。虽然这部分不涉及服务器自身的管理,但对宝塔面板的设置也有其重要。 特别是面板端口、安全入口及面板密码等涉及安全的参数设置。 启动和关闭面板 如果你长时间无需使用到宝塔面板,可以考虑...

什么是Node.js以及为什么要使用它

什么是Node.js以及为什么要使用它

JavaScript是世界上最流行的编程语言之一。今天,它为数百万个网站提供支持,并吸引了成群的开发人员和设计人员为Web构建功能。如果您是编程新手,那么 JavaScript很容易成为之一。 在最初的20年里,JavaScript主要用于客户端脚本。由于JavaScript只能在<scr...

MongoDB vs MySQL:哪个是更好的数据库管理系统?

MongoDB vs MySQL:哪个是更好的数据库管理系统?

由于市场上有各种可用的数据库,用户经常会就MongoDB与MySQL进行辩论,以找出更好的选择。 使用MySQL等关系数据库的组织在根据不断变化的需求管理和存储数据时可能会面临一定的困难。同时,新公司想知道选择什么数据库,这样他们就不会在开发过程中遇到问题。 同时,构建金融应用程序的开发人员...