以下参考https://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html
HTTP Request
HTTP请求包含以下格式:
Request-Line 请求行
从客户端到服务器的请求消息在消息的第一行中包括要应用到资源的方法、资源的标识符和正在使用的协议版本。
Request-Line以方法标记开头,后跟Request-URI和协议版本,以CRLF结尾。元素由空格SP字符分隔。
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
request-header 请求头部
https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.2
request-header字段允许客户端将有关请求以及客户端本身的其他信息传递给服务器。
request-header 字段包含以下几个:
-
Accept 用于指定响应可接受的某些媒体类型。接受标头可用于指示请求特别限于一小组所需类型;“”字符用于将媒体类型分组到范围中,“ / *”表示所有媒体类型,“type / *”表示该类型的所有子类型。媒体范围可以包括适用于该范围的媒体类型参数。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
-
Accept-Charset 指示响应可接受的字符集,如果不存在Accept-Charset标头,则默认为任何字符集都可接受。如果存在Accept-Charset标头,并且服务器无法根据Accept-Charset标头发送可接受的响应,则服务器应该发送带有406(不可接受)状态代码的错误响应
-
Accept-Encoding 限制了响应中可接受的内容编码,服务器根据Accept-Encoding字段使用以下规则测试内容编码是否可接受,如果请求中存在Accept-Encoding字段,并且服务器无法根据Accept-Encoding标头发送可接受的响应,则服务器应该发送带有406(Not Acceptable)状态代码的错误响应
Accept-Encoding: gzip, deflate
-
Accept-Language 该标头限制请求响应的语言,可以给每个语言范围赋予相关的质量值,该值表示用户对该范围指定的语言的偏好的估计。质量值默认为“q = 1”
Accept-Language: zh-CN,zh;q=0.9
-
Authorization 该字段包含用户代理的身份验证信息,如果请求是经过身份验证和指定的域,相同的凭据应该是对该领域内的所有其他请求有效
:authority: www.w3.org
-
Cache-Control 用于指定请求/响应链中的所有缓存机制必须遵守的指令。指令指定旨在防止缓存对请求或响应产生负面干扰的行为,当指令出现时没有任何#field-name参数时,该指令适用于整个请求或响应。当这样的指令与1#field-name参数一起出现时,它仅适用于指定的一个或多个字段,而不适用于请求或响应的其余部分
Cache-Control: max-age=0
-
Connection 允许发送方指定该特定连接所需的选项,
Connection: keep-alive
表示保持连接 -
Cookie 一个HTTP cookie是服务器发送给浏览器的一小片数据。浏览器可以存储它并将其与下一个请求一起发送回同一服务器。通常,它用于判断两个请求是否来自同一个浏览器 - 例如,保持用户登录。它记住无状态 HTTP协议的有状态信息
-
Host 指定所请求资源的Internet主机和端口号
-
User-Agent :请求标头字段包含有关发起请求的用户代理的信息
HTTP 消息体
消息体(如果有)用于携带与请求或响应相关联的参数
HTTP Response
在接收并解释请求消息之后,服务器以HTTP响应消息进行响应,格式为:
Status-Line
响应消息的第一行是状态行,由协议版本后跟数字状态代码及其关联的文本短语组成,每个元素由SP字符分隔
HTTP/1.1 200 OK
General Header Fields
有一些头字段对请求和响应消息具有普遍适用性,但不适用于正在传输的实体。这些标题字段适用于消息传输
- Request URL 请求访问的地址
- Request Method 请求方式,比如 GET,POST等
- Status Code 返回的响应码
- Remote Address 服务器地址
- Referrer Policy :说明服务器来源的项
Response Header 响应头部
- Cache-Control 缓存控制扩展,用于指定缓存机制
- Content-Encoding 返回内容的编码格式
- Set-Cookie: 服务器返回cookie让浏览器储存并应用与下一次请求
- Location:用于重定向到Request-URI以外的地址,以完成请求或标识新资源
- Server 包含有关源服务器用于处理请求的软件的信息
- Transfer-Encoding 指示已对消息正文应用了哪种(如果有)转换类型
Message Body 消息正文
消息正文指服务器返回的信息