通过图轻松了解HTTP方法
目录:
- 告知服务器意图的HTTP方法
- GET获取资源
- POST传输实体主体
- PUT传输文件
- DELETE删除文件
- HEAD获得报文首部
- OPTIONS询问支持的方法
- TRACE追踪路径
- CONNECT要求用隧道协议连接代理
- 持久连接
- 管线化
告知服务器意图的HTTP方法
GET获取资源
用来请求访问已被URI识别的资源,指定的资源经服务器端解析返回响应内容。
例子如下:
请求:
GET /index.html HTTP/1.1
Host:www.furfur.net
响应:返回index.html的页面资源
Host:虚拟主机运行在同一个IP上,因此使用首部字段Host加以区分。Host会告知服务器,请求的资源所处的互联网主机名和端口号。Host首部字段在HTTP/1.1规范内是唯一一个必须被包含在请求内的首部字段。
POST传输实体主体
POST的主要目的告知服务器信息,同时可以获取响应的主体内容。
例子如下:
请求:
POST/submit.cig HTTP/1.1
Host:www.furfur.net
响应:返回submit.cig接收数据的处理结果
PUT传输文件
注意:PUT方法自身不带验证机制,存在安全问题
例子如下:
请求:
PUT/fur.html HTTP/1.1
Host:www.furfur.net
响应:响应返回状态码204 No Content
204状态码表示服务器 接收的请求已经成功处理,但在返回的响应报文中不含实体的主体内容部分,也不允许返回任何实体。
DELETE删除文件
用来删除文件,与PUT方法相反,但是HTTP/1.1的DELETE方法本身和PUT方法一样不带验证机制。
例子如下:
请求:
DELETE/fur.html HTTP/1.1
Host:www.furfur.net
响应:响应返回状态码204 No Content
HEAD获得报文首部
与GET一样,只是不返回报文主体部分,用于确认URI的有效性及资源更新的日期时间等。
例子如下:
请求:
HEAD/fur.html HTTP/1.1
Host:www.furfur.net
响应:返回fur.html有关的响应首部。
OPTIONS询问支持的方法
OPTIONS询问针对请求URI指定的资源支持的方法
例子如下:
请求:
OPTIONS * HTTP/1.1
Host:www.furfur.net
响应:
HTTP/1.1 200 OK
Allow: GET,POST,HEAD,OPTIONS
TRACE追踪路径
TRACE方法让Web服务器端将之前的请求通信返回给客户端的方法。
发送请求时,在Max-Forwards首部字段中填入数字,每经过一个服务器端就将该数字减一,数值为0时停止继续传输,最后接收到的请求的服务器端返回码200 OK的响应。
但是TRACE方法容易引发XST(跨站追踪)攻击,通常不会用到。
例子如下:
请求:
TRACE /HTTP/1.1
Host:www.furfur.net
Max-Forwards:2
响应:
HTTP/1.1 200 OK
Content-Type:message/http
Content-Length:1024
TRACE/HTTP1.1
Host:www.furfur.net
Max-Forwards:2
CONNECT要求用隧道协议连接代理
实现用隧道协议进行TCP通信,主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输。
CONNECT 代理服务器名:端口号 HTTP版本
例子如下:
请求:
CONNECT fur.net:8080 HTTP/1.1
Host:www.furfur.net
响应:
HTTP/1.1 200 OK
持久连接
由于多次请求会造成无谓的TCP连接的建立和断开,增加通信量的开销,HTTP推出持久连接
持久连接(HTTP Persistent Connections 也称 HTTP keep-alive或HTTP connection reuse):只要任意一端没有明确提出断开连接,则TCP保持连接状态。
管线化
持久连接使得管线化成为可能,即不用等待响应亦可以直接发送下一个请求,这样可以做到同时并行发送多个请求,而不用一个一个等待响应。
本文参考自《图解HTTP》
查看上一篇通过图轻松了解各种协议