当前位置:首页>HTTP>HTTP协议>HTTP请求方法

HTTP请求方法

作者:微学网发布时间:2019-09-07 09:35:01

概述

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POSTHEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONSPUTPATCHDELETETRACECONNECT 方法。

序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
9 PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。

GET : 获取资源

GET 方法用来请求访问已被 URI 识别的资源。

指定的资源经服务器端解析后返回响应内容。

也就是说, 如果请求的资源是文本, 那就保持原样返回; 如果是像 CGI(Common Gateway Interface, 通用网关接口) 那样的程序, 则返回经过执行后的输出结果。

请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:

/test/demo_form.aspx?name1=value1&name2=value2

有关 GET 请求的其他一些说明:

  • GET 请求可被缓存

  • GET 请求保留在浏览器历史记录中

  • GET 请求可被收藏为书签

  • GET 请求不应在处理敏感数据时使用

  • GET 请求有长度限制

  • GET 请求只应当用于取回数据

示例

请求

GET /index.html HTTP/1.1
Host: www.weixue.wang
If-Modified-Since: Thu, 12 Jul 2019 07:30:00 GMT

响应

仅返回2019年7 月12日7 点30分以后更新过的index.html页面资源。 如果未
有内容更新, 则以状态码304 Not Modified作为响应返回

POST: 传输实体主体

POST 方法用来传输实体的主体。

虽然用 GET 方法也可以传输实体的主体, 但一般不用 GET 方法进行传输, 而是用 POST 方法。

虽说 POST 的功能与 GET 很相似, 但POST 的主要目的并不是获取响应的主体内容。

示例

请求

POST /submit.aspx HTTP/1.1
Host: www.weixue.wang
Content-Length: 1560(1560字节的数据)

响应

返回 submit.aspx 接收数据的处理结果

有关 POST 请求的其他一些说明:

  • POST 请求不会被缓存

  • POST 请求不会保留在浏览器历史记录中

  • POST 不能被收藏为书签

  • POST 请求对数据长度没有要求

比较 GET 与 POST

功能 GET POST
后退按钮/刷新 无害 数据会被重新提交,浏览器应该告知用户数据会被重新提交。
书签 可收藏为书签 不可收藏为书签
缓存 能被缓存 不能缓存
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史 参数保留在浏览器历史中。 参数不会保存在浏览器历史中。
对数据长度的限制 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 无限制。
对数据类型的限制 只允许 ASCII 字符。 没有限制。也允许二进制数据。
安全性 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET ! POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性 数据在 URL 中对所有人都是可见的。 数据不会显示在 URL 中。

PUT: 传输文件

PUT 方法用来传输文件。 就像 FTP 协议的文件上传一样, 要求在请求报文的主体中包含文件内容, 然后保存到请求 URI 指定的位置。

但是, 鉴于 HTTP/1.1 的 PUT 方法自身不带验证机制, 任何人都可以上传文件 , 存在安全性问题, 因此一般的 Web 网站不使用该方法。 若配合 Web 应用程序的验证机制, 或架构设计采用REST(REpresentational State Transfer, 表征状态转移) 标准的同类Web 网站, 就可能会开放使用 PUT 方法。

示例

请求

PUT /example.html HTTP/1.1
Host: www.weixue.wang
Content-Type: text/html
Content-Length: 1560(1560 字节的数据)

响应

响应返回状态码 204 No Content(比如 : 该 html 已存在于服务器上)。
请求执行成功了, 但无数据返回。

HEAD: 获得报文首部

HEAD 方法和 GET 方法一样, 只是不返回报文主体部分。 用于确认URI 的有效性及资源更新的日期时间等。

和 GET 一样, 但不返回报文主体。

示例

请求

HEAD /index.html HTTP/1.1
Host: www.weixue.wang

响应

返回index.html有关的响应首部

DELETE: 删除文件

DELETE 方法用来删除文件, 是与 PUT 相反的方法。 DELETE 方法按请求 URI 删除指定的资源。

但是, HTTP/1.1 的 DELETE 方法本身和 PUT 方法一样不带验证机制, 所以一般的 Web 网站也不使用 DELETE 方法。 当配合 Web 应用程序的验证机制, 或遵守 REST 标准时还是有可能会开放使用的。

示例

请求

DELETE /example.html HTTP/1.1
Host: www.weixue.wang

响应

响应返回状态码 204 No Content(比如 : 该 html 已从该服务器上删除)

OPTIONS: 询问支持的方法

OPTIONS 方法用来查询针对请求 URI 指定的资源支持的方法。

示例

请求

OPTIONS * HTTP/1.1
Host: www.weixue.wang

响应

HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
(返回服务器支持的方法)

TRACE: 追踪路径

TRACE 方法是让 Web 服务器端将之前的请求通信环回给客户端的方法。

发送请求时, 在 Max-Forwards 首部字段中填入数值, 每经过一个服务器端就将该数字减 1, 当数值刚好减到 0 时, 就停止继续传输, 最后接收到请求的服务器端则返回状态码 200 OK 的响应。

客户端通过 TRACE 方法可以查询发送出去的请求是怎样被加工修改篡改的。 这是因为, 请求想要连接到源目标服务器可能会通过代理中转, TRACE 方法就是用来确认连接过程中发生的一系列操作。

但是, TRACE 方法本来就不怎么常用, 再加上它容易引发XSTCross-Site Tracing, 跨站追踪) 攻击, 通常就更不会用到了。

示例

请求

TRACE / HTTP/1.1
Host: www.weixue.wang
Max-Forwards: 2

响应

HTTP/1.1 200 OK
Content-Type: message/http
Content-Length: 1024
TRACE / HTTP/1.1
Host: www.weixue.wang
Max-Forwards: 2(返回响应包含请求内容)

CONNECT: 要求用隧道协议连接代理

CONNECT 方法要求在与代理服务器通信时建立隧道, 实现用隧道协议进行 TCP 通信。 主要使用 SSL(Secure Sockets Layer, 安全套接层) 和 TLS(Transport Layer Security, 传输层安全) 协议把通信内容
加 密后经网络隧道传输。

CONNECT 方法的格式如下所示。
CONNECT 代理服务器名:端口号 HTTP版本

示例

请求

CONNECT proxy.weixue.wang:8080 HTTP/1.1
Host: proxy.weixue.wang

响应

HTTP/1.1 200 OK(之后进入网络隧道)

PATCH

PATCH方法出现的较晚,它在2010年的RFC 5789标准中被定义。PATCH请求与PUT请求类似,同样用于资源的更新。

二者有以下两点不同:

  • 1.PATCH一般用于资源的部分更新,而PUT一般用于资源的整体更新。

  • 2.当资源不存在时,PATCH会创建一个新的资源,而PUT只会对已在资源进行更新。