本文概述
HTTP请求是由客户端或用户发送以在服务器上启动操作的消息。
消息的第一行包括从客户端到服务器的请求消息, 应用于资源的方法, 资源的标识符以及协议版本。
句法
Request = Request-Line
*(( general-header
| request-header
| entity-header ) CRLF)
CRLF
[ message-body ]
请求线
请求行以方法令牌开始, 其后是请求URI, 协议版本, 并以CRLF结尾。使用SP字符可以分隔元素。
句法
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
1)方法
方法令牌用于指示对Request-URI标识的资源执行的方法。该方法区分大小写。
句法
Method = "OPTIONS"
| "GET"
| "HEAD"
| "POST"
| "PUT"
| "DELETE"
| "TRACE"
| "CONNECT"
| extension-method
extension-method = token
允许资源使用方法列表, 并且可以在“允许”标头字段中指定方法。响应的返回代码始终通知客户端当前是否允许在资源上使用方法。由于允许的方法集可以动态更改。
方法和说明:
i)获取
此方法使用给定的URI从给定的服务器检索信息。 GET请求可以检索数据。它不能对数据施加其他影响。
ii)头
HEAD方法与GET方法相同。它仅用于传输状态行和标题部分。
iii)开机自检
POST请求将数据发送到服务器。例如, 使用HTML表单的文件上传, 客户信息等。
iv)放置
PUT方法用于用上传的内容替换目标资源的所有当前表示形式。
v)删除
DELETE方法用于删除目标资源的所有当前表示形式, 该表示形式由URI给出。
vi)连接
CONNECT方法用于建立到服务器的隧道, 该隧道由给定的URI标识。
2)返回URI
Request-URI是统一资源标识符。它用于标识在其上应用请求的资源。
句法
Request-URI = "*" | absoluteURI | abs_path | authority
根据请求的性质, Request-URI的这四个选项取决于。
a)星号“ *”用于表示该请求不适用于特定资源, 但是将适用于服务器本身。仅当使用的方法不一定适用于资源时才允许使用。
例
选项* HTTP / 1.1
b)仅在向代理发出请求时才使用absoluteURI形式。请求的代理用于转发请求并返回响应。
例
GET http://www.srcmini02.com/WWW/TheProject.html HTTP / 1.1
c)绝对路径不能为空。如果在原始URI中不存在任何内容, 则必须将其指定为“ /”。
d)授权表仅由CONNECT方法使用。
请求标识的资源
使用Request-URI和Host标头字段的检查, 我们可以确定Internet请求标识的确切资源。
如果原始服务器确实根据请求的主机进行区分, 则原始服务器必须使用以下规则来确定HTTP / 1.1请求上的请求资源。
- 如果Request-URI是absoluteURI, 则主机将成为Request-URI的一部分。
- 如果Request-URI不是absoluteURI, 则主机将由主机标头字段值确定, 并且请求包括主机的标头字段。
- 如果规则1或2所确定的主机不是服务器上的有效主机, 则响应必须为400(错误请求)错误消息。
请求标头字段
请求标头字段用于允许客户端将其他信息(如请求和客户端本身)传递到服务器。请求标头字段用作请求修饰符, 其语义等同于编程语言方法调用中的参数。
句法
request-header = Accept
| Accept-Charset
| Accept-Encoding
| Accept-Language
| Authorization
| Expect
| From
| Host
| If-Match
| If-Modified-Since
| If-None-Match
| If-Range
| If-Unmodified-Since
| Max-Forwards
| Proxy-Authorization
| Range
| Referer
| TE
| User-Agent
只有结合协议版本的更改, 才能可靠地扩展请求标头字段的名称。