HTTP客户端以请求消息的形式向服务器发送HTTP请求,其中包括以下格式:
以下部分说明HTTP请求消息中使用的每个实体。
请求行以方法令牌开头,后跟Request-URI和协议版本,并以CRLF结尾。元素由空格SP字符分隔。
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
我们来探讨请求行中提到的每个部分。
请求方法指示要对由给定的Request-URI标识的资源执行的方法。该方法区分大小写,应始终以大写提及。下表列出了HTTP / 1.1中支持的所有方法。
SN | 方法和说明 |
---|---|
1 | 得到 GET方法用于使用给定的URI从给定的服务器检索信息。使用GET的请求只能检索数据,对数据应该没有其他影响。 |
2 | 头 与GET相同,但它只传输状态行和标题部分。 |
3 | POST POST请求用于使用HTML表单向服务器发送数据,例如客户信息,文件上传等。 |
4 | 放 使用上传的内容替换目标资源的所有当前表示。 |
5 | 删除 删除由URI给出的目标资源的所有当前表示。 |
6 | CONNECT 建立通过给定URI标识的服务器的隧道。 |
7 | 选项 描述目标资源的通信选项。 |
8 | 跟踪 执行消息循环测试以及目标资源的路径。 |
Request-URI是统一资源标识符,并标识应用请求的资源。以下是最常用的指定URI的表单:
Request-URI = "*" | absoluteURI | abs_path | authority
SN | 方法和说明 |
---|---|
1 | 当一个HTTP请求不适用于特定资源,而是服务器本身时,使用星号*,只有当所使用的方法不一定适用于资源时才允许使用星号*。例如:
选项* HTTP / 1.1 |
2 | 的绝对URI当HTTP请求被给代理作出使用。请求代理从有效缓存转发请求或服务,并返回响应。例如:
GET http://www.w3.org/pub/WWW/TheProject.html HTTP / 1.1 |
3 | Request-URI的最常见形式是用于标识源服务器或网关上的资源。例如,希望直接从原始服务器检索资源的客户端将创建到主机“www.w3.org”的端口80的TCP连接,并发送以下行:
GET /pub/WWW/TheProject.html HTTP / 1.1 主持人:www.w3.org 请注意,绝对路径不能为空; 如果原始URI中不存在,则必须将其作为“/”(服务器根目录)。 |
当我们将学习HTTP头字段时,我们将在另一章中学习General-header和Entity-header。现在,我们来看看请求头字段是什么。
请求头字段允许客户端将关于请求的附加信息以及关于客户端本身传递到服务器。这些字段充当请求修饰符。这是一些可以根据需求使用的重要的请求头字段的列表:
接受字符集
接受编码
接受语言
授权
期望
从
主办
如果匹配
If-Modified-Since
如果无匹配
如果范围
如果 - 未修改 - 自
Max-Forwards
代理授权
范围
参赞
TE
用户代理
您可以引入自定义字段,以防您要编写自己的客户端和Web服务器。
现在让我们一起来形成一个HTTP请求,从在vue5.com上运行的web服务器获取hello.htm页面
GET /hello.htm HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: www.tutorialspoint.com Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: Keep-Alive
在这里,我们不会向服务器发送任何请求数据,因为我们从服务器获取纯HTML页面。Connection是一个通用头,其余的头是请求头。以下示例显示如何使用请求消息正文将表单数据发送到服务器:
POST /cgi-bin/process.cgi HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: www.tutorialspoint.com Content-Type: application/x-www-form-urlencoded Content-Length: length Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: Keep-Alive licenseID=string&content=string&/paramsXML=string
这里给定的URL /cgi-bin/process.cgi将用于处理传递的数据,因此将返回一个响应。这里content-type告诉服务器传递的数据是一个简单的Web表单数据,长度将是消息体中放入数据的实际长度。以下示例显示如何将纯XML传递到Web服务器:
POST /cgi-bin/process.cgi HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: www.tutorialspoint.com Content-Type: text/xml; charset=utf-8 Content-Length: length Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: Keep-Alive <?xml version="1.0" encoding="utf-8"?> <string xmlns="http://clearforest.com/">string</string>