HTTP/1.1协议
摘要
关于下段备忘
版权声明
1 介绍
1.1. 需求符号
1.2、。 语法符号
BWS公司 =<BWS,参见 【HTTP】 , 第5.6.3节 > OWS系统 =<OWS,参见 【HTTP】 , 第5.6.3节 > 远程操作系统 =<RWS,请参阅 【HTTP】 , 第5.6.3节 > 绝对通过率 =<绝对路径,参见 【HTTP】 , 第4.1节 > 字段名称 =<字段名称,请参阅 【HTTP】 , 第5.1节 > 字段值 =<字段值,参见 【HTTP】 , 第5.5节 > obs-文本 =<obs文本,请参阅 【HTTP】 , 第5.6.4节 > 报价单 =<quoted-string,参见 【HTTP】 , 第5.6.4节 > 代币 =<标记,请参阅 【HTTP】 , 第5.6.2节 > 转移编码 = <传输编码,请参阅 【HTTP】 , 第10.1.4节 >
2 消息
2.1. 消息格式
2.2. 消息分析
2.3. HTTP版本
三。 请求行
3.1. 方法
3.2. 请求目标
3.2.1. 原始形态
http://www.example.org/where?q=现在
GET/在哪里? q=现在HTTP/1.1 主持人:www.example.org
3.2.2。 绝对形态
GET(获取) http://www.example.org/pub/www/TheProject.html HTTP/1.1协议
3.2.4. 星号形状
星号形式 = "*"
选项*HTTP/1.1
选项 http://www.example.org:8001 HTTP/1.1协议
选项*HTTP/1.1 主持人:www.example.org:8001
3.3. 重建目标URI
如果服务器的配置提供了固定URI方案,或者由受信任的出站网关提供了方案,则该方案将用于目标URI。这在大规模部署中很常见,因为网关服务器将接收客户端的连接上下文,并将其替换为自己与入站服务器的连接。 否则,如果通过安全连接接收请求,则目标URI的方案为“https”; 如果不是,则方案为“http”。 如果请求目标位于 权威式的 ,目标URI的权限组件是请求目标。 否则,目标URI的权限组件是 主机 标题字段。 如果没有 主机 头字段,或者如果其字段值为空或无效,则目标URI的权限组件为空。 如果请求目标位于 权威式的 或 星号形状 ,目标URI的组合 路径 和 查询 组件为空。 否则,目标URI的组合 路径 和 查询 组件是请求目标。 按照上述方法确定后,重构目标URI的组件可以重新组合为 绝对-URI 通过连接scheme、“://”、authority和组合路径和查询组件来形成。
GET/pub/WWW/TheProject.html HTTP/1.1 主持人:www.example.org
https://www.example.org/pub/www/TheProject.html
选项*HTTP/1.1 主持人:www.example.org:8080
http://www.example.org:8080
4 状态行
5 字段语法
5.1. 字段行分析
5.2. 过时的折线
6 消息正文
消息-正文 =*10月
6.1. 传输编码
传输编码:gzip,分块
6.2. 内容物-长度
6.3. 消息正文长度
-
如果 传输编码 报头字段出现在响应中,分块传输编码不是最终编码,消息正文长度是通过读取连接来确定的,直到服务器将其关闭。 如果收到的消息没有 传输编码 还有一个病人 内容物-长度 header字段,则消息帧无效,收件人 必须 将其视为不可恢复的错误,除非字段值可以成功解析为逗号分隔的列表( 第5.6.1节 属于 【HTTP】 ),列表中的所有值都有效,并且列表中的全部值都相同(在这种情况下,将使用作为Content-Length字段值的单个值处理消息)。 如果不可恢复的错误出现在请求消息中,则服务器 必须 用一个 400(错误请求) 状态代码,然后关闭连接。 如果它位于代理接收到的响应消息中,则代理 必须 关闭与服务器的连接,放弃收到的响应,并发送 502(错误网关) 对客户端的响应。 如果它在用户代理接收的响应消息中,则用户代理 必须 关闭与服务器的连接并放弃收到的响应。 如果这是一条请求消息,并且以上都不为真,那么消息体长度为零(不存在消息体)。 否则,这是一条没有声明消息正文长度的响应消息,因此消息正文长度由服务器关闭连接之前接收的八位字节数决定。
7 传输编码
7.1. 块传输编码
块状身体 = * 块 last-chunk系列 拖车段 CRLF公司 块 = 块大小 [ 块-文本 ] CRLF公司 区块数据 CRLF公司 块大小 = 1* 六角头螺栓 last-chunk系列 = 1*("0") [ 块-文本 ] CRLF公司 组块数据 = 1* 10月 ; 组块大小的八位组序列
7.1.1. 区块扩展
7.1.2. 大块拖车段
7.1.3. 解码分块
长度:=0 读取区块大小、区块文本(如果有)和CRLF while(chunk-size>0){ 读取chunk-data和CRLF 将区块数据附加到内容 长度:=长度+块大小 读取chunk-size、chunk-ext(如果有)和CRLF } 读取尾部字段 while(拖车字段不为空){ if(拖车字段单独存储/转发){ 将拖车字段附加到现有拖车字段 } else if(拖车字段被理解为可合并){ 将尾部字段与现有标题字段合并 } 其他{ 丢弃拖车场 } 读取尾部字段 } 内容-长度:=长度 从传输编码中删除“分块”
7.2. 传输压缩编码
7.3。 传输编码注册表
姓名 描述 指向规范文本的指针
7.4. 谈判转让编码
TE:放气 技术工程师: TE:拖车,放气; q=0.5
8 处理不完整消息
9 连接管理
9.1. 成立
9.2. 将响应与请求关联
9.3. 坚持不懈
9.3.1. 重试请求
9.3.2. 管道铺设
9.4. 并发
9.5. 故障和超时
9.6. 拆卸
连接:关闭
9.7. TLS连接启动
9.8. TLS连接关闭
10 将消息作为数据括起来
10.1. 媒体类型消息/http
类型名称: 消息 子类型名称: http协议 所需参数: 不适用 可选参数: 版本,消息类型 版本: 所附消息的HTTP-版本号(例如“1.1”)。 如果不存在,可以从正文的第一行确定版本。 消息类型: 消息类型-“请求”或“响应”。 如果不存在,则可以从正文的第一行确定类型。
编码注意事项: 只允许“7位”、“8位”或“二进制” 安全注意事项: 看见 第11节 互操作性注意事项: 不适用 发布的规范: RFC 9112(参见 第10.1条 ). 使用此媒体类型的应用程序: 不适用 片段标识符注意事项: 不适用 其他信息: 幻数: 不适用 此类型的别名已弃用: 不适用 文件扩展名: 不适用 Macintosh文件类型代码: 不适用
联系人和电子邮件地址以获取更多信息: 请参阅作者地址部分。 预期用途: 通用 使用限制: 不适用 作者: 请参阅“作者地址”部分。 更改控制器: IESG公司
10.2. 媒体类型应用程序/http
类型名称: 应用 子类型名称: http协议 所需参数: 不适用 可选参数: 版本,消息类型 版本: 所附消息的HTTP-版本号(例如“1.1”)。 如果不存在,可以从正文的第一行确定版本。 消息类型: 消息类型-“请求”或“响应”。 如果不存在,则可以从正文的第一行确定类型。
编码注意事项: 此类型包含的HTTP消息是“二进制”格式; 通过电子邮件传输时,需要使用适当的内容传输编码。 安全注意事项: 看见 第11节 互操作性注意事项: 不适用 发布的规范: RFC 9112(参见 第10.2条 ). 使用此媒体类型的应用程序: 不适用 片段标识符注意事项: 不适用 其他信息: 此类型的不推荐别名: 不适用 幻数: 不适用 文件扩展名: 不适用 Macintosh文件类型代码: 不适用
联系人和电子邮件地址以获取更多信息: 请参阅作者地址部分。 预期用途: 通用 使用限制: 不适用 作者: 请参阅作者地址部分。 更改控制器: IESG公司
11 安全注意事项
11.1. 响应拆分
11.2. 请求走私
11.3条。 消息完整性
11.4. 消息机密性
12 IANA考虑
12.1条。 字段名称注册
12.2. 媒体类型注册
12.3. 传输编码注册
12.4. ALPN协议ID注册
13 工具书类
13.1. 规范性引用文件
[ 缓存 ] Fielding,R.,Ed.,Nottingham,M.,Ed,和J.Reschke,Ed.” HTTP缓存 ”, 标准98 ,RFC 9111, 内政部10.17487/RFC9111 2022年6月。 [ 超文本传输协议 ] Fielding,R.,Ed.,Nottingham,M.,Ed,和J.Reschke,Ed.” HTTP语义 ”, 标准97 ,RFC 9110, 内政部10.17487/RFC9110 2022年6月。 [ 射频1950 ] Deutsch,P.和J-L.Gailly,” ZLIB压缩数据格式规范3.3版 “,RFC 1950, DOI 10.17487/RFC1950 1996年5月< https://www.rfc-editor.org/info/rfc1950 >. [ RFC1951号文件 ] Deutsch,P.“ DEFLATE压缩数据格式规范1.3版 “,RFC 1951, 内政部10.17487/RFC1951 1996年5月< https://www.rfc-editor.org/info/rfc1951 >. [ RFC1952号文件 ] Deutsch,P.,“ GZIP文件格式规范4.3版 “,RFC 1952, 内政部10.17487/RFC1952 1996年5月< https://www.rfc-editor.org/info/rfc1952 >. [ RFC2119协议 ] 布拉德纳,S.“ RFC中用于指示需求级别的关键词 ”, 业务连续性计划14 ,RFC 2119, 内政部10.17487/RFC2119 1997年3月< https://www.rfc-editor.org/info/rfc2119 >. [ RFC5234号文件 ] Crocker,D.,Ed.和P.Overell,” 用于语法规范的增强BNF:ABNF ”, 标准68 ,RFC 5234, 内政部10.17487/RFC5234 2008年1月< https://www.rfc-editor.org/info/rfc5234 >. [ RFC7405协议 ] Kyzivat,P.,“ ABNF中的大小写敏感字符串支持 “,RFC 7405, DOI文件10.17487/RFC7405 2014年12月< https://www.rfc-editor.org/info/rfc7405 >. [ RFC8174号文件 ] B.雷巴“ RFC 2119关键词中大小写的歧义 ”, 业务连续性计划14 ,RFC 8174, 内政部10.17487/RFC8174 2017年5月< https://www.rfc-editor.org/info/rfc8174 >. [ TLS13标准 ] Rescorla,E.,“ 传输层安全(TLS)协议1.3版 “,RFC 8446, 内政部10.17487/RFC8446 ,2018年8月< https://www.rfc-editor.org/info/rfc8446 >. [ URI(URI) ] Berners-Lee,T.、Fielding,R.和L.Masinter,“ 统一资源标识符(URI):通用语法 ”, 标准66 ,RFC 3986, 内政部10.17487/RFC3986 2005年1月< https://www.rfc-editor.org/info/rfc3986 >. [ 美国科学院国际研究所 ] 美国国家标准协会,“编码字符集——7位美国信息交换标准代码”,ANSI X3.41986年。 [ 韦尔奇 ] T.韦尔奇“ 一种高性能数据压缩技术 “,IEEE计算机17(6), 内政部10.1109/MC.1984.1659158 1984年6月< https://ieeexplore.ieee.org/document/1659158/ >.
13.2. 资料性引用
[ HTTP/1.0协议 ] Berners-Lee,T.、Fielding,R.和H.Frystyk,“ 超文本传输协议——HTTP/1.0 “,RFC 1945, DOI文件10.17487/RFC1945 1996年5月< https://www.rfc-editor.org/info/rfc1945 >. [ 克莱因 ] 克莱恩,A.,“ 分而治之-HTTP响应拆分、Web缓存中毒攻击和相关主题 “,2004年3月< https://packetstormsecurity.com/papers/general/whitepaper_httpresponse.pdf >. [ 林哈特 ] Linhart,C.、Klein,A.、Heled,R.和S.Orrin,” HTTP请求走私 “,2005年6月< https://www.cgisecurity.com/lib/HTTP-Request-Smuggling.pdf >. [ RFC2045协议 ] Freed、N.和N.Borenstein,” 多用途互联网邮件扩展(MIME)第1部分:互联网邮件正文格式 “,RFC 2045, 内政部10.17487/RFC2045 ,1996年11月< https://www.rfc-editor.org/info/rfc2045 >. [ RFC2046协议 ] Freed、N.和N.Borenstein,” 多用途互联网邮件扩展(MIME)第二部分:媒体类型 “,RFC 2046, 内政部10.17487/RFC2046 1996年11月< https://www.rfc-editor.org/info/rfc2046 >. [ RFC2049协议 ] Freed、N.和N.Borenstein,” 多用途互联网邮件扩展(MIME)第五部分:一致性标准和示例 “,RFC 2049, DOI 10.17487/RFC2049 1996年11月< https://www.rfc-editor.org/info/rfc2049 >. [ RFC2068协议 ] Fielding,R.、Gettys,J.、Mogul,J.,Frystyk,H.和T.Berners-Lee,” 超文本传输协议——HTTP/1.1 “,RFC 2068, 内政部10.17487/RFC2068 1997年1月< https://www.rfc-editor.org/info/rfc2068 >. [ RFC2557型 ] Palme,J.、Hopmann,A.和N.Shelness,” 聚合文档的MIME封装,例如HTML(MHTML) ”,RFC 2557, 内政部10.17487/RFC2557 1999年3月< https://www.rfc-editor.org/info/rfc2557 >. [ RFC5322号文件 ] Resnick,P.编辑,“ Internet消息格式 “,RFC 5322, 内政部10.17487/RFC5322 2008年10月< https://www.rfc-editor.org/info/rfc5322 >. [ RFC7230协议 ] Fielding,R.,Ed.和J.Reschke,Ed.” 超文本传输协议(HTTP/1.1):消息语法和路由 ”,RFC 7230, 内政部10.17487/RFC7230 2014年6月< https://www.rfc-editor.org/info/rfc7230 >. [ RFC8126协议 ] Cotton,M.、Leiba,B.和T.Narten,” RFC中IANA注意事项部分的编写指南 ”, 业务连续性计划26 ,RFC 8126, 内政部10.17487/RFC8126 2017年6月< https://www.rfc-editor.org/info/rfc8126 >.
附录A。 收集的ABNF
BWS公司 =<BWS,参见 【HTTP】 , 第5.6.3节 > HTTP消息 =起始线CRLF*(场线CRLF)CRLF[ 消息正文] HTTP-名称 =%x48.54.50; 超文本传输协议 HTTP-版本 =HTTP-name“/”数字“.”数字 OWS系统 =<OWS,参见 【HTTP】 , 第5.6.3节 > 远程操作系统 =<RWS,参见 【HTTP】 , 第5.6.3节 > 传输编码 =[传输编码*(OWS“,”OWS传输编码 ) ] 绝对-URI =<绝对URI,参见 [URI] , 第4.3节 > 绝对形态 =绝对-URI 绝对通过率 =<绝对路径,参见 【HTTP】 , 第4.1节 > 星号形状 = "*" 权威 =<权限,请参阅 [URI] , 第3.2节 > 权威式的 =uri-host“:”端口 块 =chunk-size[chunk-ext]CRLF chunk-data CRLF 组块数据 =1*10月 块文本 =*(BWS“;”BWS chunk-ext-name[BWS“=”BWS chunk-ext-val ] ) 块文本名称 =标记 chunk-ext-val语言 =标记/报价-字符串 块大小 =1*六角 块状身体 =*块last-chunk trailer-section CRLF 实地考察 =字段名称“:”OWS字段值OWS 字段名称 =<字段名称,请参阅 【HTTP】 , 第5.1节 > 字段值 =>字段值,请参阅 【HTTP】 , 第5.5节 > last-chunk系列 =1*“0”[chunk-ext]CRLF 消息-正文 =*10月 方法 =标记 obsfold公司 =OWS CRLF RWS obs-文本 =<obs-text,请参阅 【HTTP】 , 第5.6.4节 > 原始形态 =绝对路径[“?”查询] 港口 =<端口,请参阅 [URI] , 第3.2.3节 > 查询 =<查询,请参阅 [URI] , 第3.4节 > 报价单 =<quoted-string,参见 【HTTP】 , 第5.6.4节 > 合理措辞 =1*(HTAB/SP/VCHAR/obs-text) 请求行 =方法SP请求-目标SP HTTP-版本 请求目标 =原始形式/绝对形式/权威形式/ 星号形状 起始线 =请求行/状态行 状态代码 =3迪吉特 状态行 =HTTP-版本SP状态代码SP[原因措辞] 代币 =<标记,请参阅 【HTTP】 , 第5.6.2节 > 拖车段 =*(场线CRLF) 转移编码 =<传输编码,请参阅 【HTTP】 , 第10.1.4节 > 乌里霍斯特 =<主机,请参阅 [URI] , 第3.2.2节 >
附录B。 HTTP和MIME之间的差异
B.1、。 MIME版本
B.2节。 转换为标准形式
B.3节。 日期格式的转换
B.4。 内容编码的转换
B.5节。 内容传输编码的转换
B.6节。 MHTML和线路长度限制
附录C。 以前RFC的更改
C.1、。 HTTP/0.9的更改
第2章。 HTTP/1.0的更改
C.2.1、。 多宿主Web服务器
C.2.2、。 保持连接畅通
C.2.3、。 传输编码简介
C.3、。 RFC 7230的变更
致谢
索引
一个 C D类 deflate(传输编码) 7.2
F类 G公司 语法 绝对形态 3.2 , 3.2.2 阿尔法 1.2 星号形状 3.2 , 3.2.4 授权表格 3.2 , 3.2.3 块 7.1 区块数据 7.1 块-文本 7.1 , 7.1.1 块-外部名称 7.1.1 chunk-ext-val语言 7.1.1 块大小 7.1 块状身体 7.1 CR公司 1.2 CRLF公司 1.2 CTL公司 1.2 数字信息技术 1.2 报价 1.2 实地考察 5 , 7.1.2 字段名称 5 字段值 5 六角头螺栓 1.2 HTAB公司 1.2 HTTP消息 2.1 HTTP-名称 2.3 HTTP-版本 2.3 last-chunk系列 7.1 低频 1.2 消息-正文 6 方法 3.1 obs褶皱 5.2 10月 1.2 原始形态 3.2 , 3.2.1 推理短语 4 请求行 三 请求目标 3.2 SP(标准普尔) 1.2 起始线 2.1 状态代码 4 状态线 4 拖车段 7.1 , 7.1.2 传输编码 6.1 VCHAR公司 1.2
gzip(传输编码) 7.2
H(H) 标题字段 标题行 2.1 收割台部分 2.1 标题 2.1 超文本传输协议 1 , 1 , 1.1 , 1.2 , 1.2 , 1.2 , 1.2 , 1.2 , 1.2 , 1.2 , 1.2 , 1.2 , 1.2 , 1.2 , 1.2 , 2 , 2.3 , 三 , 三 , 3.1 , 3.2 , 3.2 , 3.2.1 , 3.2.2 , 3.2.3 , 3.2.4 , 3.3 , 3.3 , 4 , 5 , 6 , 6 , 6.1 , 6.1 , 6.1 , 6.1 , 6.2 , 6.2 , 6.3 , 7 , 7.1.2 , 7.2 , 7.2 , 7.2 , 7.3 , 7.3 , 7.4 , 7.4 , 7.4 , 7.4 , 9 , 9 , 9.2 , 9.3 , 9.3.1 , 9.3.2 , 9.3.2 , 9.6 , 11 , 11.4 , 12.1 , 12.3 , 13.1 , 一个 , 一个 , 一个 , 一个 , 一个 , 一个 , 一个 , 一个 , 一个 , 一个 , 一个 , B.3节 , B.6节 , C.2.1条款 , C.3号机组 , “致谢” 第2节 1.1 第2.3节 三 第2.5节 2.3 第3节 2 第4.1节 1.2 第4.2节 3.2 第4.2.1节 9 第4.2.2节 11.4 第5.1节 1.2 第5.5节 1.2 , 5 第5.6.1节 1.2 , 6.3 , 一个 第5.6.2节 1.2 第5.6.3节 1.2 , 1.2 , 1.2 第5.6.4节 1.2 , 1.2 第5.6.7节 B.3节 第6.4节 6 第6.4.1节 6 第6.5节 7.1.2 , 7.4 第7.1节 3.3 第7.2节 3.2 , 3.2.1 , C.2.1条款 第7.3节 9 第7.4节 3.3 第7.6节 3.2.2 第7.6.1节 7.4 , 9.3 , 9.6 第8.4.1条 6.1 , 7.3 第8.4.1.1节 7.2 第8.4.1.2节 7.2 第8.4.1.3节 7.2 第8.6条 6.2 , 6.2 第9节 3.1 第9.2.1条 9.3.2 第9.2.2节 9.3.1 , 9.3.2 第9.3.6节 3.2.3 , 6.1 第9.3.7节 3.2.4 第10.1.4节 1.2 , 6.1 , 7 , 7.3 , 7.4 , 12.3 第12.4.2条 7.4 第14.6条 B.6节 第15节 4 第15.2条 9.2 第15.4.5条 6.1 第15.5.15条 三 第18.4条 12.1 致谢 “致谢”
HTTP/1.0协议 2.3 , 13.2
K(K) L(左) M(M) O(运行) (请求目标的)原始形式 3.2.1
R(右) 请求目标 3.2 重油催化裂化1950 12.3 , 13.1 RFC1951号文件 12.3 , 13.1 RFC1952号文件 12.3 , 13.1 RFC2045协议 2.1 , 6.1 , 13.2 , B类 , B.1节 第6节 6.1
RFC2046协议 13.2 , B.2节 RFC2049协议 13.2 , B.2节 第4节 B.2节
RFC2068协议 13.2 , C.2.2条款 第19.7.1条 C.2.2条款
RFC2119协议 1.1 , 13.1 RFC2557协议 13.2 , B.6节 RFC5234号文件 1.2 , 1.2 , 13.1 附录B.1 1.2
RFC5322号文件 2.1 , 13.2 , B类 射频c7230 1 , 1 , 13.2 , C.3号机组 RFC7405协议 1.2 , 13.1 RFC8126协议 7.3 , 13.2 第4.8节 7.3
RFC8174号文件 1.1 , 13.1
T型 U型 W公司 X(X)