报文格式

1. 请求消息报文 Request Message Format

request-line-img

如上图所示,HTTP请求由三部分组成,分别是请求行(Request Line),请求头(Reqeust Header),请求正文(Request Body)。

请求行

请求行的格式是:Method Request-URI HTTP-Version CRLF, 如GET /index.html HTTP/1.1,采用GET请求,访问根目录下的index.html页面资源, 采用HTTP/1.1协议。

请求头
  • 以冒号分隔的键值对,以回车(CR)加换行(LF)符号序列结尾。如:Accept: text/plain
  • 请求头和请求正文之间用一个空行分隔,即请求头的最后一个字段后面加两个CRLF;
  • 请求头的字段和值以明文字符串格式传输;
    1. 按照惯例,非标准的协议头字段是在字段名称前加X-前缀来标识,但这一惯例已在2012年6月被废弃;
    2. 标准中没有对每个协议头字段的名称和值的大小设置任何限制,也没有限制字段的个数。然而,出于实际场景及安全性的考虑,大部分的服务器、客户端和代理软件都会实施一些限制。
请求字段

参考:HTTP头字段 - WIKI

看一个日常工作中的页面的请求头:

GET /staff/api/view/dingtalk/user/0851621329366335 HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Accept: */*
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1
Referer: http://127.0.0.1:8080/staff/ddtalk/bpmstest
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.6,en;q=0.4
Cookie: JSESSIONID=428A8DE6EEF1512E98621D9BA8AAA265
  • Host:服务器的域名(用于虚拟主机 ),以及服务器所监听的传输控制协议端口号。如果所请求的端口是对应的服务的标准端口,则端口号可被省略。 自超文件传输协议版本1.1(HTTP/1.1)开始便是必需字段。如上述请求中,请求的服务器为本地的8080端口:127.0.0.1:8080
  • User-Agent: 浏览器的浏览器身份标识字符串
  • Accept: 指定客户端能够接受的回应内容类型(Content-Types)
协议头字段名 说明 示例 状态
Accept 能够接受的回应内容类型(Content-Types)。 Accept: text/plain 常设
Accept-Charset 能够接受的字符集 Accept-Charset: utf-8 常设
Accept-Encoding 能够接受的编码方式列表。参考[HTTP压缩]。 Accept-Encoding: gzip, deflate 常设
Accept-Language 能够接受的回应内容的自然语言列表。 Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.6,en;q=0.4 以逗号分隔,q=0.8表示;号前语言的优先级,值一般为0-1 常设
Accept-Datetime 能够接受的按照时间来表示的版本 Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT 临时
Authorization 用于超文本传输协议的认证的认证信息 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 常设
Cache-Control 用来指定在这次的请求/响应链中的所有缓存机制 都必须 遵守的指令 Cache-Control: no-cache 常设
Connection 该浏览器想要优先使用的连接类型[[rfc:7230#section-6.1 "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing"]]. </cite></ref> Connection: keep-alive
Connection: Upgrade 常设
Cookie 之前由服务器通过 Set- Cookie (下文详述)发送的一个 超文本传输协议Cookie Cookie: $Version=1; Skin=new; 常设: 标准
Content-Length 以 八位字节数组 (8位的字节)表示的请求体的长度 Content-Length: 348 常设
Content-MD5 请求体的内容的二进制 MD5 散列值,以 Base64 编码的结果 Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ== 过时的[[rfc:7231#appendix-B "Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content"]]. </cite></ref>
Content-Type 请求体的 多媒体类型 (用于POST和PUT请求中) Content-Type: application/x-www-form-urlencoded 常设
Date 发送该消息的日期和时间(按照 RFC 7231 中定义的"超文本传输协议日期"格式来发送) Date: Tue, 15 Nov 1994 08:12:31 GMT</code 常设
Copyright © wychuan.com 2017 all right reserved,powered by Gitbook该文件修订时间: 2017-09-22 08:35:17

results matching ""

    No results matching ""