【图解HTTP】(四)HTTP请求方法有哪些?各自的功能是什么?
一、请求报文的组成
HTTP请求报文由请求方法、请求URI、协议版本、可选的首部字段和内容实体构成,如下图。
其中,请求方法用于告知服务器该请求的意图,下面介绍HTTP/1.1中可以使用的方法。
二、各种请求方法
1. GET:获取资源
GET方法用来请求访问服务器上的资源,该资源由请求URI指定。
指定的资源经过服务器解析之后返回响应内容。返回的资源可以是文本、图片或者是程序的执行结果等。下面是2个GET请求与响应的例子。
第二个例子中的首部字段if-Modified-Since
与http浏览器缓存策略有关,后面可以再写文章讲讲。
2、POST:传输实体主体
POST方法一般用来传输实体主体,所谓的实体就是要传输的有效载荷数据,它包括实体首部和实体主体。通常报文主体等于实体主体。
其实GET方法也可以传输实体的主体,但是我们一般不用GET方法进行传输,而是使用POST。
下面是一个例子:
3、PUT:传输文件
PUT方法用于上传文件,需要在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。由于该方法自身不带验证机制,因此任何人都可以上传文件,存在安全性问题,所以一般不使用该方法。
下面是一个例子:
4、HEAD:获得报文首部
HEAD方法和GET方法的区别只是HEAD方法不返回报文主体部分,它用于获取与指定URI有关的首部信息。如资源的有效性和更新的日期时间等。
下面是一个例子:
5、DELETE:删除文件
DELETE方法和PUT方法相反,它用于删除请求URI指定的资源。但是HTTP/1.1的DELETE方法和PUT方法一样,本身不带验证机制,所以一般的WEB网站也不会使用该方法,否则容易引起安全性问题。
下面是一个例子:
6、OPTIONS:询问支持的方法
OPTIONS方法用来查询针对请求URI指定的资源支持的方法。
7、TRACE:追踪路径
TRACE方法是让Web服务器将之前的请求通信环回(loop-back)给客户端的方法。该方法为客户端提供了一种debug机制,客户端通过该方法可以查询发送出去的请求是怎样被加工修改/篡改的。
发送请求时在首部字段Max-Forwards
填入数值,没经过一个服务器该数值减1,当数值减到0时就停止传输,由最后接收到请求的服务器返回状态码200 Ok的响应。
该方法容易引发XST(跨站追踪攻击),通常也不会使用。
下面是一个例子:
8、CONNECT:要求用隧道协议连接代理
CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL和TLS协议把通信内容加密后经网络隧道传输。
CONNECT 方法可以开启一个客户端与所请求资源之间的双向沟通的通道。它可以用来创建隧道(tunnel)。
CONNECT 可以用来访问采用了 SSL (en-US) (HTTPS) 协议的站点。客户端要求代理服务器将 TCP 连接作为通往目的主机隧道。之后该服务器会代替客户端与目的主机建立连接。连接建立好之后,代理服务器会面向客户端发送或接收 TCP 消息流。
CONNECT方法的格式如下:
CONNECT 代理服务器名:端口号 HTTP版本
三、HTTP/1.0和HTTP/1.1支持的方法
其中,LINK和UNLINK已被HTTP/1.1废弃,不再支持。
注:文章图片来源于《图解HTTP》