方法表明了客户端希望服务器对资源执行的动作,常用的方法包括:GET、HEAD、POST、PUT、TRACE、OPTIONS和DELETE,每个服务器可以实现这些方法中的部分或者全部。下面将对这些方法做一个详细的介绍。
GET
通常用于请求服务器发送某个资源,HTTP/1.1要求服务器必须实现该方法,下面是一个HTTP请求:
GET /seasonal/index-fall.html HTTP/1.1 Host: www.joes-hardware.com Accept: *
响应报文如下:
HTTP/1.1 200 OK Content-Type: text/html Context-Length: 617 //body
HEAD
HEAD和GET类似,只是服务器的响应中只返回首部(没有实体部分),一般用于:
1)在不获取资源的情况下了解资源的状况;
2)通过查看响应中的状态码,看看某个对象是否存在;
3)通过查看首部,测试资源是否被修改了。
HEAD返回的首部应该和GET返回的首部完全相同。
PUT
向服务器写入文档,就是让服务器用请求的主体部分来创建一个由所请求的URL命名的新文档,或者如果那个URL已经存在的话,就用这个主体来替代它。
请求报文:
PUT /product-list.txt HTTP/1.1 Host: www.joes-hardware.com Content-type: text/plain Content-length: 34 //body
响应报文:
HTTP/1.1 201 Created Location: http://www.joes-hardware.com/product-list.txt Content-type: text/plain Context-length: 47 http://www.joes-hardware.com/product-list.txt
POST
POST通常用来支持HTML的表单,表单中填好的数据被发送到服务器,服务器将其交给对应的程序进行处理。
请求报文:
POST /inventory-check.cgi HTTP/1.1 Host: www.joes-hardware.com Content-type: text/plain Content-length: 18 item-bandsaw 2647
服务端交由对应程序处理后,发送响应报文:
HTTP/1.1 200 OK Content-type: text/plain Context-length: 37 The bandsaw model 2647 is in stock!
TRACE
客户端发起一个请求,请求可能会穿过防火墙、代理、网关或其他一些应用程序,每个中间节点都可能会修改原始的HTTP请求。TRACE请求会在目地服务器端发起一个“环回”诊断,行程最后一站的服务器会弹回一条TRACE响应,并在响应主体中带上收到的原始请求报文,这样客户端可以诊断原始报文是否被修改过。
请求报文:
TRACE /product-list.txt HTTP/1.1 Accept:* Host: www.joes-hardware.com
报文经过代理服务器后:
TRACE /product-list.txt HTTP/1.1 Host: www.joes-hardware.com Accept: * Via: 1.1 proxy3.company.com
服务器弹回的TRACE响应:
HTTP/1.1 200 OK Content-type: text/plain Content-length: 96 TRACE /product-list.txt HTTP/1.1 Host: www.joes-hardware.com Accept: * Via: 1.1 proxy3.company.com
TRACE响应经过代理服务器后:
HTTP/1.1 200 OK Content-type: text/plain Content-length: 96 Via: 1.1 proxy3.company.com TRACE /product-list.txt HTTP/1.1 Host: www.joes-hardware.com Accept: * Via: 1.1 proxy3.company.com
TRACE方法主要用于诊断,它主要的缺陷是它假定中间应用程序对各种不同类型请求(GET、HEAD、POST等)的处理都是相同的,如果实际情况不同,那么诊断将不准确。
OPTIONS
OPTIONS方法请求Web服务器告知其支持的各种功能,这为客户端应用程序提供了一种手段,使其不用实际访问那些资源就能判定访问各种资源的最优方式。
请求报文:
OPTIONS * HTTP/1.1 Host: www.joes-hardware.com Accept: *
响应报文:
HTTP/1.1 200 OK Allow: GET, POST, PUT, OPTIONS Context-length: 0
DELETE
DELETE方法用于请服务器删除请求URL所指定的资源。
请求报文:
DELETE /product-list.txt HTTP/1.1 Host: www.joes-hardware.com
响应报文:
HTTP/1.1 200 OK Content-type: text/plain Content-length: 54 //响应消息
扩展方法
HTTP被设计成字段可扩展的,扩展方法指的是没有在HTTP/1.1中定义的方法,这些方法为开发者提供了一种扩展这些HTTP服务能力的手段。