HTTP请求详解

本文概述

  • 请求线
  • 请求标识的资源
  • 请求标头字段
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-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请求上的请求资源。
  1. 如果Request-URI是absoluteURI, 则主机将成为Request-URI的一部分。
  2. 如果Request-URI不是absoluteURI, 则主机将由主机标头字段值确定, 并且请求包括主机的标头字段。
  3. 如果规则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请求详解】只有结合协议版本的更改, 才能可靠地扩展请求标头字段的名称。

    推荐阅读