1. 报文结构
1.1 请求报文结构
- Start-Line
单行,包括 Method + URL + HTTP Version - Headers
多行,形式为 Name:Value - Body
可选,主体部分
Get https://www.baidu.com/ HTTP/1.1-------------------------------------------------------------------------------Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Accept-Encoding: gzip, deflate, brAccept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,ja;q=0.6Cache-Control: no-cacheConnection: keep-aliveCookie: ...Host: www.baidu.comPragma: no-cacheUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
1.2 响应报文结构
- Status-Line
单行,包括 HTTP Version + Status Code + Description - Headers
多行,形式为 Name:Value - Body
可选,主体部分
HTTP/1.1 200 OK-------------------------------------------------------------------------------Bdpagetype: 2Bdqid: 0xd511e4460001e2c0Cache-Control: privateConnection: Keep-AliveContent-Encoding: gzipContent-Type: text/html;charset=utf-8Date: Mon, 15 Oct 2018 15:34:34 GMTExpires: Mon, 15 Oct 2018 15:34:34 GMTServer: BWS/1.1Set-Cookie: BDSVRTM=223; path=/Set-Cookie: BD_HOME=1; path=/Set-Cookie: H_PS_PSSID=1434_21124_26350_20928; path=/; domain=.baidu.comStrict-Transport-Security: max-age=172800Transfer-Encoding: chunkedX-Ua-Compatible: IE=Edge,chrome=1-------------------------------------------------------------------------------Body...
2. Http2 伪头部
2.1. 作用
与HTTP1.x使用起始行来指定URI,请求方法,状态码等不同, HTTP2使用专门的伪头部来实现此目的(以‘:‘作为开头).
所有的伪头部必须在常用首部之前出现.
:authority: developer.mozilla.org:method: GET:path: /en-US/docs/Web/HTTP/Basics_of_HTTP:scheme: httpsReferrer Policy: no-referrer-when-downgradeaccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8accept-encoding: gzip, deflate, braccept-language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,ja;q=0.6cache-control: max-age=0cookie: ...referer: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSPupgrade-insecure-requests: 1user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
2.2. 连接专用伪头部
在HTTP2中除了TE头部以外不再有连接相关的头部,包括:Keep-Alive, Proxy-Connection,Transfer-Encoding,和Upgrade等
2.3. 请求伪头部
- ‘:method‘伪头部
对应HTTP1.x起始行中的Method - ‘:scheme‘伪头部
对应HTTP1.x起始行中HTTP Version,值为http或者https - ‘:authority‘伪头部
对应HTTP1.x头部中的Host - ‘:path‘伪头部
对应HTTP1.x起始行中的URL,可以为*或/
2.4. 响应伪头部
- ‘:status‘伪头部
对应HTTP1.x起始行中Status Code
2. 方法
- GET | 请求指定的页面信息,并返回实体主体
- HEAD | 与GET相同, 但仅返回状态和头部
- POST | 请求服务器对内容进行处理
- PUT | 从客户端向服务器传送的数据取代指定的文档的内容
- DELETE | 请求服务器删除指定的资源
- CONNECT | 要求用隧道协议连接代理(SSL/TLS)
- OPTIONS | 查询针对请求URI指定资源支持的方法
- TRACE | 让服务端将之前的请求通信还给客户端
详情查看[Web高级_Http方法详解]
3. 头部
- 一般头: 同时适用于请求和响应消息,但与最终消息主体中传输的数据无关的消息头。
- 请求头: 包含更多有关要获取的资源或客户端本身信息的消息头。
- 响应头: 包含有关响应的补充信息,如其位置或服务器本身(名称和版本等)的消息头。
- 实体头: 包含有关实体主体的更多信息,比如主体长(Content-Length)度或其MIME类型。
详情查看[Web高级_Http头部详解]
4. 状态码
- 100-199 信息响应
- 200-299 成功响应
- 300-399 重定向
- 400-499 客户端响应
- 500-599 服务端响应
详情查看[Web高级_Http状态码详解]
refs:
https://tools.ietf.org/html/rfc2616
https://tools.ietf.org/html/rfc7540
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
Web高级 HTTP报文
原文地址:https://www.cnblogs.com/full-stack-engineer/p/9926496.html