http 实体首部

http 实体首部

Table of Contents

  • Encoding
  • 控制传输编码
  • 分块编码
  • 范围
  • 差异编码
Content-Type               类型
Content-Length             长度
Content-Encoding           编码方式
Content-Language           最相配的人类语言
Content-Location           备用位置, 请求时通过他可以获得对象
Content-Range              部分实体, 说明他是整体的哪个部分
Content-MD5                实体主体内容的 md5 校验和
Last-Modified              Server 上最后的修改日期时间
Expires                    将要失效的日期
Allow                      Server 允许的方法
ETag                       文档的唯一验证码
Cache-Control              如何缓存该文档

Encoding

gzip
deflate
compress
identity   不使用编码
client 没有指定 Accept-Encoding 相当于指定 Accept-Encoding: * (允许任何编码方式)
server 的响应首部是 content-encoding

优先级

Accept-Encoding: compress;q=1.0, identity;q=0.5, *;q=0
优先级级别 1.0 最高

控制传输编码

Transfer-Encoding: 响应首部, 告知 Client 为了可靠地传输报文, 已经进行了什么编码
TE: 请求首部, 告知 Server 可以使用哪些传输编码扩展 (可以理解 Accept-Transfer-Encoding)

分块编码

chunked encoding, 没有 content-length
不是持久连接的时候: Client 不需要知道 Server 发送的报文长度, 只要读到服务器关闭主机连接为止
持久连接的时候: Client 需要知道 Server 发送的报文长度 Content-Length

为了解决持久连接需要 Content-Length 的问题, 就有了分块传输. 以大小为 0 的块作为主体表示结束

HTTP/1.1 200 OK<CR><LF>
Content-type: text/plain<CR><LF>
Transfer-encoding: chunked<CR><LF>        <== 分块编码
Trailer: Content-MD5<CR><LF>              <== 见下面
27<CR><LF>
.................                         <== 27 个字符
5<CR><LF>
......                                    <== 5 个字符
0<CR><LF>                                 <== 传输结束
Content-MD5: xxxxxxxxx                    <== 仅当首部中有 Trailer 首部才出现

Trailer 首部: 列出了跟在分块报文之后的首部列表 (部分应用程序可能不理解这个首部)
Trailer 不能包括 Transfer-Encoding, Content-Length, Trailer

范围

请求首部
必须包含 Range 头信息来指示客户端希望得到的内容范围, 并且可能包含 If-Range 来作为请求条件

Range: bytes=5001-10000                  从 5001 到 10000
Range: bytes=5001-                       从 5001 到之后
Range: bytes=-3000, 5000-7000            从一开始到 3000 字节 和 5000-7000

用处: 断线重启, 多线程下载文件

响应首部:
Content-Range 用以指示本次响应中返回的内容的范围, 表示方法和 Range 一样
如果是 Content-Type 为 multipart/byteranges 的 多段下载,
则每一 multipart 段中都应包含 Content-Range 域用以指示本段的内容范围
假如响应中包含 Content-Length, 那么它的数值必须匹配它返回的内容范围的真实字节数

GET /bigfile.html HTTP/1.1
Range: bytes=20224-

HTTP/1.1 206 partial
Content-Range: bytes=20224-
Accept-ranges: bytes

差异编码

Client 接收 Server 端页面发生改变的部分而不是全部
A-IM 首部, Accept-Instance-Manipulation (接受实例操控)
如果成功, Server 端会响应一个特殊的头部 – 226 IM Used 告诉客户端它正在发送的是所请求对象的实例操控

GET /bigfile.html HTTP/1.1
If-None-Match: xxxxxxx1            <== Etag
A-IM: diffe

HTTP/1.1 226 IM Used
IM: diffe
Etag: xxxxxxx2                     <== 新的 Etag
Delta-base: xxxxxxx1               <== 原先的 Etag

IM 的算法类型

vcdiff
diffe          <== Unix diff-e 命令
gdiff
gzip           <== 对差异部分进行压缩, 用法如下
deflate        <== 对差异部分进行压缩, 用法如下
range          <== 表示差异部分的范围
identity

IM: vcdiff, gzip

时间: 2024-09-30 09:34:36

http 实体首部的相关文章

HTTP 首部字段详细介绍

HTTP 协议的请求和响应报文中必定包含 HTTP 首部,只是我们平时在使用 Web 的过程中感受不到它.本章 我们一起来学习 HTTP 首部的结构,以及首部中各字段的用法. 6.1 HTTP 报文首部 首部内容为客户端和服务器分别处理请求和响应提供 所需要的信息.对于客户端用户来说,这些信息中的大部分内容都无须亲自查看. HTTP 请求报文 在请求中,HTTP 报文由方法.URI.HTTP 版本.HTTP 首部字段等部分构成. 下面的示例是访问 http://hackr.jp 时,请求报文的首

前端学HTTP之报文首部

前面的话 首部和方法配合工作,共同决定了客户端和服务器能做什么事情.在请求和响应报文中都可以用首部来提供信息,有些首部是某种报文专用的,有些首部则更通用一些.本文将详细介绍HTTP报文中的首部 结构 HTTP首部字段是构成HTTP报文的要素之一.在客户端与服务器之间以HTTP协议进行通信的过程中,无论是请求还是响应都会使用首部字段,它能起到传递额外重要信息的作用.使用首部字段是为了给浏览器和服务器提供报文主体大小.所使用的语言.认证信息等内容 HTTP首部字段是由首部字段名和字段值构成的,中间用

http协议进阶(三)补充:报文首部

一直纠结要不要把关于首部的内容放到上一篇随笔中,毕竟报文中首部内容还是很重要的,之前也介绍过,犹豫良久,觉得写一个补充吧,原谅我有点强迫症...... 之前写的关于报文首部的传送门: 报文首部:http://www.cnblogs.com/imyalost/p/5708445.html 通用首部字段:http://www.cnblogs.com/imyalost/p/5717430.html 请求首部字段:http://www.cnblogs.com/imyalost/p/5726556.htm

http协议首部

http协议: http/0.9, http/1.0, http/1.1, http/2.0 http协议:stateless 服务器无法持续追踪访问者来源,为了解决购物车问题: 跟踪机制: Cookie:当客户端第一次请求服务端时,服务器会给客户端生成一个身份表示(理解为随机数),只用于访问当前站点,客户端再次访问该服务器时,会提供cookie信息给服务器. Set cookie 给客户端发送cookie (首部) ***************************************

前端学HTTP之实体和编码

前面的话 每天都有各种媒体对象经由HTTP传送,如图像.文本.影片以及软件程序等.HTTP要确保它的报文被正确传送,识别.提取以及适当处理.为了实现这些目标,HTTP使用了完善的标签来描述承载内容的实体.本文将详细介绍HTTP的实体和编码 实体介绍 如果把HTTP报文想象成因特网货运系统中的箱子,那么HTTP实体就是报文中实际的货物.下图展示了一个简单的实体,装在HTTP响应报文中 实体首部指出这是一个纯文本文档(Content-Type : text/plain),它只有18个字节长(Cont

HTTP首部都是用来做什么的

请求首部 1. Accept首部 Accept首部为客户端提供了一种将其喜好和能力告知服务器的方式,包括它们想要什么,可以使用什么,以及最重要的,它们不想要什么. Accept首部会使连接的两端都受益,客户端就会得到它们想要的内容,服务器端则不会浪费其时间和带宽来发送客户端无法使用的东西 Accept     告诉服务器能够发送哪些媒体类型 Accept-Charset     告诉服务器能够发送哪些字符串 Accept-Encoding    告诉服务器能够发送哪些编码方式 Accept-La

图解HTTP第六章:HTTP首部

学习HTTP首部的结构和首部中各字段的用法. HTTP首部字段 使用首部字段是为了给浏览器和服务器提供报文主体大小.所使用的语言.认证信息等内容. 首部字段对应单个HTTP首部可以有多个值.如果首部字段重复,根据浏览器逻辑处理,有的以第一个为准,有的以最后出现的为准. 4种首部字段类型 通用首部字段(General Header Fields) 请求首部字段(Request Header Fields) 响应首部字段(Response Header Fields) 实体首部字段(Entity H

实体和编码

一.实体 (1) 实体:实体包含实体首部和实体主体(2) 实体首部:实体首部描述了 HTTP 报文的内容,参考实体的首部字段(3) 实体主体:实体主体就是 HTTP 报文,即原始的数据 二.Content-Length (1) Content-Length 首部指出报文中实体主体的字节大小,这个大小是包含了所有内容编码的,比如对主体压缩,则 Content-Length 表示的是压缩后的大小而不是原始主体的大小(2) 检测截尾:使用 Content-Length 首部是为了能够检测出服务器崩溃而

报文时箱子,实体是货物

•15.1报文时箱子,实体是货物 报文实体是由实体首部和实体主体组成. 实体首部指出这是一个纯文本文档,text/plain:他只有18个字节.一个空白行把首部字段同主体的开始部分割开来.实体首部描述了HTTP报文的内容. 10个基本字体首部字段: Content-Type:实体中所承载对象的类型,如:Content-Type:text/plain Content-Length:所传送实体主体的长度和大小 Content-Language:与所传送对象最匹配的人类语言 Content-Encod