本文概述
- 请求线
- 请求标识的资源
- 请求标头字段
消息的第一行包括从客户端到服务器的请求消息, 应用于资源的方法, 资源的标识符以及协议版本。
句法
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-methodextension-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.srcmini.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
【HTTP请求详解】只有结合协议版本的更改, 才能可靠地扩展请求标头字段的名称。
推荐阅读
- HTTP响应详解
- HTTP方法解析
- HTTP消息解析
- HTTP实体详解
- HTTP内容协商
- HTTP缓存解释
- 前端|前端 --- JavaScript WebAPI
- 前端|前端 --- JavaScript 语法基础
- Android传统HTTP请求get----post方式提交数据(包括乱码问题)