| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> HTTP - 实体首部 -> 正文阅读 |
|
[网络协议]HTTP - 实体首部 |
由于请求和响应报文中都可能包含实体部分,所以在这两种类型的报文中都可能出现这些首部。 实体首部
Content-Type Content-Type 首部字段说明了实体主体的 MIME 类型。Content-Type 首部还支持可选的参数来进一步说明内容的类型。charset(字符)参数就是个例子,它说明把实体中的比特转换为文本文件中字符的方法。
Content-Language 实体的 Content-Language 首部字段描述实体的目标受众语言。
Content-Encoding HTTP 定义了一些标准的内容编码类型,并允许用扩展编码的形式增添更多的编码。Content-Encoding 首部就用这些标准化的代号来说明编码时使用的算法。
gzip、compress以及 deflate 编码都是无损压缩算法,用于减少传输报文的大小,不会导致信息损失。这些算法中,gzip 通常是效率最高的,使用最为广泛。
客户端可以给每种编码附带Q(质量)值参数来说明编码的优先级。Q值范围从 0.0 到 1.0,0.0 说明客户端不想接受所说明的编码,1.0 则表明最希望使用的编码。 identify 编码代号只能在 Accept-Encoding 首部中出现,客户端用它来说明相对于其他内容编码算法的优先级。 Content-Length Content-Length 首部指示出报文中实体主体的字节大小。这个大小是包含了所有内容编码的,比如,对文本文件进行了 gzip 压缩的话,Content-Length 首部就是压缩后的大小,而不是原始大小。 除非使用了分块编码,否则 Content-Length 首部就是带有实体主体的报文必须使用的。使用 Content-Length 首部是为了能够检测出服务器奔溃而导致的报文截尾,并对共享持久连接的多个报文进行正确分段。
Content-Cache Content-Range HTTP 允许客户端实际上只请求文档的一部分,或者说某个范围。Range 首部在流行的点对点文件共享客户端软件中得到广泛应用,它们从不同的对等实体同时下载多媒体的不同部分。 请求主体
响应主体
Content-MD5 尽管 HTTP 通常都是在像 TCP/IP 这样的可靠传输协议之上实现的,但仍有很多因素导致报文的一部分在传输过程中被修改,比如不兼容的转码代理,或者中间代理有误,等等。为检测实体主体的数据是否被不经意(或不希望有)地修改,发送方可以在生成初始的主体时,生成一个数据的校验和,这样接收方就可以通过检查这个校验和来捕获所有意外的实体修改了。 除了检查报文的完整性之外,MD5还可以当作散列表的关键字,用来快速定位文档并消除不必要的重复内容存储。除了这些可能的用法,一般不常用到 Content-MD5 首部。 传输编码 使用传输编码是为了改变报文中的数据在网络上的传输方式。最新的 HTTP 规范只定义了一种传输编码,就是分块编码。 当使用持久连接时,在服务器写主体之前,必须知道它的大小并在 Content-Length 首部中发送。如果服务器动态创建内容,就可能在发送之前无法知道主体的长度。 分块编码为这种困难提供了解决方案,只要允许服务器把主体逐块发送,说明每块的大小就可以了。因为主体是动态创建的,服务器可以缓冲它的一部分,发送其大小和相应的块,然后在主体发送完之前重复这个过程。服务器可以用大小为 0 的块作为主体结束的信号,这样就可以继续保持连接,为下一个响应做准备。 HTTP 协议中只定义了两种两个首部来描述和控制传输编码。
下面的例子中,请求使用了 TE 首部来告诉服务器它可以接受分块编码(如果这是 HTTP/1.1 应用程序的话,这就是必须的)并且愿意接受附在分块编码的报文结尾上的拖挂:
如果客户端的 TE 首部中说明它可以接受拖挂的话,就可以在分块的报文最后加上拖挂。产生原始响应的服务器也可以在分块的报文最后加上拖挂。拖挂内容是可选的元数据,客户端不一定需要理解和使用(客户端可以忽略并丢弃拖挂中的内容)。 拖挂中可以包含附带的首部字段,它们的值在报文开始的时候可能是无法确定的(例如,必须要先生成主体的内容)。Content-MD5 首部就是一个可以在拖挂中发送的首部,因为在文档生成之前,很难算出它的 MD5。 除了 Transfer-Encoding、Trailer以及 Content-Length 首部之外,其他 HTTP 首部都可以作为拖挂发送。
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:59:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |