开发手册 欢迎您!
软件开发者资料库

HTTP - 请求

HTTP请求 - 从简单的概述,协议参数,消息体系结构,请求,响应,连接,缓存,状态代码,标题字段,安全性和简单步骤开始,简单易学地学习HTTP协议(超文本,传输,基于RFC 2616的协议)。 GET,POST,HEAD,PUT等方法以及合适的例子。

HTTP客户端以请求消息的形式向服务器发送HTTP请求,其中包括以下格式:

 
  • 请求行

  • 零个或多个标题(一般|请求|实体)字段后跟CRLF

  • 空行(即CRLF前面没有任何内容的行)
    表示标题字段的结尾

  • 可选消息正文

以下各节介绍HTTP请求消息中使用的每个实体.

Request-Line

Request-Line以方法标记开头,后跟Request-URI和协议版本,以CRLF结尾.元素由空格SP字符分隔.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

让我们讨论请求行中提到的每个部分.

请求方法

request method 表示对给定 Request-URI 标识的资源执行的方法.该方法区分大小写,应始终以大写形式提及.下表列出了HTTP/1.1中支持的所有方法.

SN方法和描述
1 GET

GET方法用于使用给定的URI从给定服务器检索信息.使用GET的请求应仅检索数据,并且不应对数据产生其他影响.

2 HEAD

与GET相同,但它仅传输状态行和标题部分.

3 POST

POST请求用于向服务器发送数据例如,使用HTML表单的客户信息,文件上传等.

4 PUT

用上传的内容替换目标资源的所有当前表示.

5 DELETE

删除URI给出的目标资源的所有当前表示.

6 CONNECT

建立到服务器的隧道由给定的URI标识.

7选项

描述目标资源的通信选项.

8 TRACE

执行消息循环测试以及目标资源的路径.

Request-URI

Request-URI是统一资源标识符,用于标识应用请求的资源.以下是指定URI的最常用表单:

Request-URI = "*" | absoluteURI | abs_path | authority

 

SN方法和描述
1当HTTP请求不使用时,使用星号 * 应用于特定资源,但应用于服务器本身,并且仅在使用的方法不一定适用于资源时才允许.例如:

选项* HTTP/1.1

2在向代理发出HTTP请求时使用 absoluteURI .请求代理从有效缓存转发请求或服务,并返回响应.例如:

GET https://img01.yuandaxia.cn/Content/img/tutorials/http/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.现在,让我们检查一下Request头字段是什么.

请求头字段允许客户端将有关请求和客户端本身的其他信息传递给服务器.这些字段充当请求修饰符.这是一个可以根据要求使用的一些重要Request-header字段的列表:

  • Accept-Charset

  • 接受编码

  • 接受语言

  • 授权

  • 期待

  • 来自

  • 主持人

  • If-Match

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Max-Forwards

  • 代理授权

  • 范围

  • Referer

  • TE

  • User-Agent

如果要编写自己的自定义客户端和Web服务器,可以引入自定义字段.

请求消息示例

现在让我们把它放进去吧一起形成一个HTTP请求,从it1352上运行的Web服务器上获取 hello.htm 页面.com

GET /hello.htm HTTP/1.1User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)Host: www.it1352.comAccept-Language: en-usAccept-Encoding: gzip, deflateConnection: Keep-Alive

这里我们没有向服务器发送任何请求数据,因为我们从服务器获取纯HTML页面. Connection是一个通用标头,其余标头是请求标头.以下示例显示如何使用请求消息正文将表单数据发送到服务器:

POST /cgi-bin/process.cgi HTTP/1.1User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)Host: www.it1352.comContent-Type: application/x-www-form-urlencodedContent-Length: lengthAccept-Language: en-usAccept-Encoding: gzip, deflateConnection: Keep-AlivelicenseID=string&content=string&/paramsXML=string

这里给定的URL /cgi-bin/process.cgi 将用于处理传递的数据,因此将返回响应.这里 content-type 告诉服务器传递的数据是一个简单的Web表单数据, length 将是放在邮件正文中的数据的实际长度.以下示例显示如何将纯XML传递到Web服务器:

POST /cgi-bin/process.cgi HTTP/1.1User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)Host: www.it1352.comContent-Type: text/xml; charset=utf-8Content-Length: lengthAccept-Language: en-usAccept-Encoding: gzip, deflateConnection: Keep-Alivestring