请求行是请求的第1
行。
请求行只有1
行。
<Request-Method> <Request-URI> <HTTP-Version> <CRLF>
请求行分为4
个部分,这4
个部分都是必需的,每部分之间用1
个空格
分开。
示例1:
GET /index.html HTTP/1.1 <CRLF>
示例2:
GET /favorite/list?uid=10000020&pageNumber=1&pageSize=10 HTTP/1.1 <CRLF>
Request-Method
(请求方法)不仅会影响协议的格式,而且是有语意的。
Request-URI
是大小写敏感的,Request-URI
必需是大写的英文字母。
Request-Method
共8
种,如下:
GET | 请求获取Request-URI 所标识的资源 |
---|---|
POST | 在Request-URI 所标识的资源后附加新的数据,方法要求被请求服务器接受附在请求后面的数据,常用于提交表单。 |
PUT | 请求服务器存储一个资源,并用Request-URI 作为其标识 |
DELETE | 请求服务器删除Request-URI 所标识的资源 |
HEAD | 请求获取由Request-URI 所标识的资源的响应消息报头,HEAD方法与GET方法几乎是一样的,对于HEAD请求的回应部分来说, 它的HTTP头部中包含的信息与通过GET请求所得到的信息是相同的。利用这个方法,不必传输整个资源内容, 就可以得到Request-URI 所标识的资源的信息。该方法常用于测试超链接的有效性,是否可以访问,以及最近是否更新。 |
TRACE | 请求服务器回送收到的请求信息,主要用于测试或诊断 |
CONNECT | 保留将来使用 |
OPTIONS | 请求查询服务器的性能,或者查询与资源相关的选项和需求 |
URI
的规范由RFC3986定义。
这里特别注意的是:HTTP/1.0
和HTTP/1.1
对Request-URI
的表示不同。
在HTTP/1.0
里,Request-URI
里包含了scheme
和authority
。
在HTTP/1.1
里,Request-URI
里不包含scheme
和authority
。
在HTTP/1.1
里新增了Host请求头,scheme
和authority
放到Host请求头里了。
HTTP/1.0
示例:
GET http://localhost:8080/index.html HTTP/1.0 <CRLF>
HTTP/1.1
示例:
GET /index.html HTTP/1.0 <CRLF>
Host: http://localhost:8080
URI
不能超过1024byte
。
HTTP-Version
表示HTTP协议的版本,这里只能是HTTP/1.0
或者HTTP/1.1
, 分别代表HTTP 1.0
和HTTP 1.1
。
CRLF
表示回车并换行,除了作为结尾的CRLF
外,不允许出现单独的CR
或LF
字符。
在实际编写协议的时候,使用\r\n
。