确认过眼神,看清HTTP协议

发布时间:2024-12-13  

导读:什么是 HTTP?它有什么属性?我们常用的是什么呢?快来阅读本文,将会为你一一道来。

什么是 HTTP 协议?

在了解HTTP之前,我们需要了解什么是网络通信模型(也就是我们常说的 OSI 模型)

OSI 模型

OSI 模型是对网络中数据是如何被传送和接收的一个具象化的展示,如下图展示

在 OSI 中我们所处在最顶层,我们所有的网络的行为,数据的传递都是从顶至下然后在从下至顶完成一次传递的。每一层都会有对应的一些协议,协议就好比是数据的 '通行证',有些协议会把我们的数据加密,让它更安全,有些协议帮助数据建立通道,指明去路。而我们这次要说的 HTTP 协议属于应用层中的协议,它的主要作用就是传递资源,建立通道让我们更加方便的去访问网络资源。资源必须是通过 URL 地址可以访问到的,包括但不限于图片,数据,文件等等。

HTTP属性

我们已经知道了 HTTP 协议在 OSI 中的位置以及功能。那么现在我们就来看看它神秘面纱下的样子吧。

HTTP结构

我们称呼 HTTP 内容为报文,一个 HTTP 由请求报文和响应报文组成,最方便的报文查看就是浏览器开发者工具的 Network 这一项

以上是访问 https://hellogithub.com/ 后查看到的请求报文 (Request Headers) 和响应报文(Response Headers)。完整的请求就是客户端发送请求,服务器返回响应,关闭连接

请求和响应的格式长得差不多,它们都是由:

一条初始行零或多条头信息一个空行一个可选的消息体组成的

那么现在让我们进一步分析所展示的数据吧

General 内容展示的是通用头

Request Url: 请求地址 (目前资源所在的地址)

Request Method: 请求方法,请求方法是使用 HTTP 动词来对目标资源进行操作,常用的请求方法有如下7种

1.GET:用于请求访问已被url识别的资源,可以通过url传参给服务器2.POST:用于传输信息给服务器3.PUT:传输文件,报文体中包含文件内容,保存在对应的url位置4.HEAD:获得报文首部,与GET方法相似,只是不返回报文主体,一般用于验证一个内容是否正常存在,或者url是否有效5.OPTIONS:返回服务器可用的方法(请求方法)6.TRACE:查看http协议有没被修改。7.DELETE :删除对应url位置的文件

Status Code: 状态码,不同的状态码代表不同情况,如下罗列一些常用状态码

1 开头的状态码代表信息响应2 开头表示请求的成功,常见有:2003 开头的状态吗表示重定向,常见有:3044 开头的状态码表示客户端的响应,常见有:404( Not Found )5 开头的状态码则代表服务端的响应,常见有:500( 服务器器遇到了问题 )

如果过需要了解详细 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status

Remote Address: 远程地址,这个地址代表的是服务器所在IP地址

Refer Policy: 这是用来监管哪些访问来源信息,no-referrer-when-downgrade (默认值),意思是在没有指定任何策略的情况下用户代理的默认行为。在同等安全级别的情况下,引用页面的地址会被发送( HTTPS->HTTPS ),但是在降级的情况下不会被发送 ( HTTPS->HTTP )。

具体请查看—> https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Referrer-Policy

Response Headers(代表服务器的响应信息)

Connection: keep-alive,这个 header 表示客户端和服务器在一次请求和响应之后不要关闭连接

但是为什么要使用这个头部呢?原因是在早期的 HTTP 1.0中,每发出一个请求都要创建一个连接,但是创建连接的过程是一个损耗资源的过程,所以在后期的 HTTP/1.0 以及 HTTP/1.1 中引入了重用连接机制,需要添加该请求头,而在 HTTP/1.1 中已经默认是长连接了。

Content-Encoding: gzip,这个 header ****主要是设置数据压缩,在 Web 应用中我们通常都要打开gzip压缩,这样使得我们的数据体积更小,所占用的带宽也更小所以达到了性能优化的目的

Content-type: text/html; charset=utf-8,这个 header 表明了资源类型,因为我们访问的是网页所以类型便是 text-html 而我们设置的编码是 utf-8

Date: 表示报文创建的日期

Server: nginx,这个 header 表明服务器类型,nginx 说明使用了代理服务器,也许并不是应用真正的服务器类型

Set-Cookie: 被用来服务端向客户端设置 cookie

Strict-Transport-Security: 这是一个安全设置,表示只有 HTTPS (一种加密的 HTTP 协议,通常可以代替第6层 OSI 模型的功能)才能访问

Transfer-Encoding: 消息首部指明了将 entity 安全传递给用户所采用的编码形式。chunked表示数据以一系列分块的形式进行发送

Request Headers(代表客户端请求信息)

Accept: 请求头用来告知客户端可以处理的内容类型,这种内容类型用MIME类型来表示。借助内容协商机制, 服务器可以从诸多备选项中选择一项进行应用,并使用 Content-Type 应答头通知客户端它的选择

Accept-Encoding: 会将客户端能够理解的内容编码方式——通常是某种压缩算法——进行通知。通过内容协商的方式,服务端会选择一个客户端提议的方式,使用并在响应报文首部 Content-Encoding 中通知客户端该选择。

Accept-Language: 请求头允许客户端声明它可以理解的自然语言,以及优先选择的区域方言。

Cashe-Control: 设置缓存

Cookie: 客户端传递的 cookie

User-Agent: 表明客户端一些基本设备信息

结语

本文中我们学习了 OSI 模型,知道了 HTTP 协议是在模型的那一层,知道了一个完整的HTTP请求是怎么样的,然后通过 Chrome DevTools 分析了一个完整的 HTTP 请求,我们知道了常用的请求方法,常用的网络状态码,响应头以及请求头,还有一些常用到的 header。但是本文介绍的只是HTTP中的一小部分,还有很多有用的 header 等待我们去发现,以及还有 HTTP 2.0 版本的激动人心的新特性。

文章来源于:21IC    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    确认过眼神,看清HTTP协议; 导读:什么是 HTTP?它有什么属性?我们常用的是什么呢?快来阅读本文,将会为你一一道来。 什么是 HTTP 协议? 在了解HTTP之前......
    响应模式          首先介绍请求响应模式的物联网协议,即“一问一答”的形式,包括HTTP和CoAP。 一、HTTP读者最为熟悉的是HTTP,在早期也的确有不少设备采用基于REST风格的HTTP协议作为云端与设备端的应用层协议......
    降低产品开发成本并加快其上市速度。该系列支持DALI、DMX、蓝牙®智能等业内领先的通信协议。Spansion将在德国慕尼黑电子展(Electronica)4号馆552展台上(A4.552)介绍......
    ,在此基础上采用HTTP协议,在HTTP协议基础上采用HTML语言实现所要描述的网页功能。应用时通过浏览器与Web服务器建立的TCP连接进行信息解析、交互,以实现从网页上进行参数的配置、修改、程序......
    +TCPClinet; 2.通讯协议HTTP 3.天气数据获取平台:心知天气网 ESP8266 WIFI模块自带TCP/IP网络协议栈,通过AT指令集完成网络模式配置。知心......
    直接被DNS解析为淘宝的数据中心的服务器IP地址,App请求发送到数据中心处理。 HTTP 不管发送到CDN还是数据中心,App请求都会以HTTP协议发送。 HTTP是一个应用层协议,当我......
    /12/20/1703056993.jpg): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /var......
    解更多XMLRPC的细节可以看这个XML-RPC:概述。 举个例子,一个XMLRPC请求是下面这个样子的。因为XMLRPC是基于HTTP协议的,所以下面的就是个标准的HTTP报文。 POST / HTTP......
    十分感谢快手对Akamai的信任,我们与快手的合作证明了通过共享数据和联合创新所能获得的丰硕的成果。”QUIC协议是一个基于UDP的传输协议,因其高效的传输效率和多路并发的能力,已成为下一代互联网协议HTTP/3......
    代理和内置 HTTP/2 协议处理,为开发人员和 QA 专业人员打造更安全、更高效、更具前瞻性的测试环境。LambdaTest Tunnel 现已与 SOCKS5 代理实现无缝集成,为测......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>