当前位置: 首页 > Web前端 > HTML

Day86-100《图解HTTP》读书笔记(四)——HTTP头信息

时间:2023-03-28 19:19:36 HTML

HTTP通信过程包括客户端向服务器发送请求和服务器返回客户端的响应。1.HTTP消息用于HTTP协议交互的信息称为HTTP消息。请求端(客户端)的HTTP报文称为请求报文,响应端(服务器)的HTTP报文称为响应报文。2、请求报文和响应报文的结构一般有4种报头,分别是:通用报头、请求报头、响应报头和实体报头。请求行包含用于请求的方法、请求URI和HTTP版本。状态行包含指示响应结果的状态代码、原因短语和HTTP版本。Header字段包含表示请求和响应的各种条件和属性的各种标头。3、编码提高传输速率HTTP可以直接按照数据的原貌来传输数据,但也可以在传输过程中通过编码来提高传输速率。通过即时编码,可以有效地处理大量访问请求。3.1消息体和实体体的区别消息(message)是HTTP通信中的基本单位,由八位字节序列组成(octet为8位),通过HTTP通信进行传输。实体作为请求或响应的有效载荷数据(补充项)传输,其内容由实体头和实体主体组成。3.2压缩传输的内容编码在要发送的邮件中添加附件时,为了减小邮件体积,我们会先使用ZIP压缩文件,然后添加附件发送。HTTP协议中称为内容编码的功能可以做类似的事情。内容编码实体由客户端接收并负责对其进行解码。常用的内容编码如下。gzip(GNUzip)compress(UNIX系统标准压缩)deflate(zlib)identity(无编码)3.3分块发送的块传输编码在传输大容量数据时,通过将数据分块成多个块,浏览器可以通过页。这种对实体主体进行分块的功能称为分块传输编码(ChunkedTransferCoding)。ChunkedTransferCoding将实体主体分成多个部分(块)。每个区块会以十六进制标示区块大小,实体主体的最后一个区块会标示“0(CR+LF)”。HTTP/1.1中有一种叫做TransferCoding的机制,可以在通信时以一定的编码方式进行传输,但只定义为以块传输编码方式起作用。4.发送各种数据的多部分对象集合发送电子邮件时,我们可以在电子邮件中写入文本并添加多个附件。这是因为采用了MIME(MultipurposeInternetMailExtensions,多用途互联网邮件扩展)机制,使得邮件可以处理文本、图片、视频等多种不同类型的数据。HTTP协议也采用多部分对象集合,一个发送的消息体可以包含多种类型的实体。multipart/form-data在上传网页表单文件时使用。multipart/byteranges状态码206(PartialContent,部分内容)在响应消息包含多个范围的内容时使用。多部分/表单数据内容类型:多部分/表单数据;**boundary=AaB03x****--AaB03x**内容配置:表单数据;name="field1"JoeBlow**--AaB03x**内容配置:表单数据;名称=“图片”;filename="file1.txt"内容类型:文本/纯文本...(file1.txt的数据)...**--AaB03x--**多部分/字节范围sHTTP/1.1206部分内容日期:周五,2012年7月13日02:45:26GMT最后修改时间:2007年8月31日星期五02:02:20GMT内容类型:multipart/byteranges;**boundary=THIS_STRING_SEPARATES****--THIS_STRING_SEPARATES**Content-Type:application/pdfContent-Range:bytes500-999/800054...(范围指定数据)...**--THIS_STRING_SEPARATESContent-Type:application/pdfContent-Range:bytes7000-7999/8000****...**(rangespecifieddata)**...--THIS_STRING_SEPARATES--**在HTTP消息中使用多部分对象集合时,Content-type需要添加到头部域。使用边界字符串来划分由多部分对象集合指定的各种实体。5.范围请求获取部分内容。如果下载过程中网络中断,则必须从头开始。为了解决上述问题,需要一种可恢复机制。所谓恢复,是指能够从上次下载中断的地方恢复下载。要实现这个功能,需要指定下载实体的范围。像这样发送指定范围的请求称为范围请求。5001~10000bytesRange:bytes=5001-100006,contentnegotiationreturnsthemostsuitablecontent内容协商机制是指客户端和服务端对响应资源内容进行协商,然后提供最合适的资源给客户端.内容协商会以响应资源的语言、字符集、编码方式等作为判断依据。请求报文中包含的某些头域(如下)是判断的依据。有关这些头字段的详细说明,请参阅下一章。AcceptAccept-CharsetAccept-EncodingAccept-LanguageContent-Language1、服务器驱动协商(Server-drivenNegotiation)内容协商由服务器端进行。它是在服务器端通过引用请求的头部字段自动处理的。但是,对于用户来说,以浏览器发送的信息作为判断依据,未必能够筛选出最优的内容。2、客户端驱动协商(Agent-drivenNegotiation)是客户端进行内容协商的方法。用户从浏览器显示的可用选项列表中手动选择。也可以使用JavaScript脚本在网页上自动进行上述选择。例如,根据操作系统或浏览器的类型,自行切换到PC版页面或移动版页面。3.透明协商(TransparentNegotiation)是服务器驱动和客户端驱动的结合,是服务器和客户端进行内容协商的一种方法。最后搭建了《图解HTTP》分享阅读会,有兴趣的小伙伴可以一起阅读(ardenzhaogx)