方法表明了client希望server对资源运行的动作。经常使用的方法包含:GET、HEAD、POST、PUT、TRACE、OPTIONS和DELETE,每一个server能够实现这些方法中的部分或者所有。以下将对这些方法做一个具体的介绍。

GET

通经常使用于请求server发送某个资源。HTTP/1.1要求server必须实现该方法,以下是一个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类似,仅仅是server的响应中仅仅返回首部(没有实体部分),一般用于:

1)在不获取资源的情况下了解资源的状况。

2)通过查看响应中的状态码,看看某个对象是否存在;

3)通过查看首部。測试资源是否被改动了。

HEAD返回的首部应该和GET返回的首部全然同样。

PUT

向server写入文档。就是让server用请求的主体部分来创建一个由所请求的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的表单,表单中填好的数据被发送到server。server将其交给相应的程序进行处理。

请求报文:
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

client发起一个请求,请求可能会穿过防火墙、代理、网关或其它一些应用程序。每一个中间节点都可能会改动原始的HTTP请求。

TRACE请求会在目地server端发起一个“环回”诊断,行程最后一站的server会弹回一条TRACE响应,并在响应主体中带上收到的原始请求报文。这样client能够诊断原始报文是否被改动过。

请求报文:

TRACE /product-list.txt HTTP/1.1
Accept:*
Host: www.joes-hardware.com

报文经过代理server后:

TRACE /product-list.txt HTTP/1.1
Host: www.joes-hardware.com
Accept: *
Via: 1.1 proxy3.company.com

server弹回的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响应经过代理server后:

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方法请求Webserver告知其支持的各种功能,这为client应用程序提供了一种手段。使其不用实际訪问那些资源就能判定訪问各种资源的最优方式。

请求报文:
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方法用于请server删除请求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服务能力的手段。


HTTP请求和响应2:方法(Method)的更多相关文章

  1. python通过get,post方式发送http请求和接收http响应的方法,pythonget

    python通过get,post方式发送http请求和接收http响应的方法,pythonget 本文实例讲述了python通过get,post方式发送http请求和接收http响应的方法.分享给大家 ...

  2. iOS开发——网络篇——HTTP/NSURLConnection(请求、响应)、http响应状态码大全

    一.网络基础 1.基本概念> 为什么要学习网络编程在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新, ...

  3. struts2基础——请求与响应、获取web资源

    一.请求与响应 Action1.含义:(1) struts.xml 中的 action 元素,也指 from 表单的 action 属性,总之代表一个 struts2 请求.(2) 用于处理 Stru ...

  4. 写一个ActionFilter检测WebApi接口请求和响应

    我们一般用日志记录每次Action的请求和响应,方便接口出错后排查,不过如果每个Action方法内都写操作日志太麻烦,而且客户端传递了错误JSON或XML,没法对应强类型参数,请求没法进入方法内, 把 ...

  5. Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. laravel框架总结(一) -- 请求和响应

    一.laravel请求 1.获取请求 1>获取请求的 URI path 方法会返回请求的 URI.所以,如果接收到的请求目标是 http://domain.com/foo/bar,那么 path ...

  7. HeadFirst Jsp 04 (请求和响应作为servlet)

    servlet 的存在就是为了客服服务, servlet的任务是得到一个客户的请求, 再发回一个响应. 由上图可知, web 容器会在启动后就加载所有的servlet类, 并为之创建实例和初始化 注意 ...

  8. http请求返回响应码的意思

    HTTP 状态响应码 意思详解/大全 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518. ...

  9. HTTP基础:URL格式、 HTTP请求、响应、消息

    HTTP URL 格式: http://host[:port][abs_path] 其中http表示要通过HTTP协议来定位网络资源. host表示合法的Internet主机域名或IP地址(以点分十进 ...

  10. CakePHP之请求与响应对象

    请求与响应对象 请求与响应对象在 CakePHP 2.0 是新增加的.在之前的版本中,这两个对象是由数组表示的,而相关的方法是分散在RequestHandlerComponent,Router,Dis ...

随机推荐

  1. mongo基本命令

    > show dbs    -- 查看数据库列表 > use admin   --创建admin数据库,如果存在admin数据库则使用admin数据库 > db   ---显示当前使 ...

  2. For Path

    /****** Script for SelectTopNRows command from SSMS ******/ DECLARE @table TABLE (姓名 VARCHAR(10),课程 ...

  3. AE中实现Control中的各种图形工具的方法

    添加命名空间 using ESRI.ArcGIS.SystemUI;using ESRI.ArcGIS.Controls; A类:前面有Controls 后面有tool的工具都可以用同一类的代码实现( ...

  4. Windows2008下RDP采用私有CA服务器证书搭建文档

    在中小型公司建立企业根证书颁发机构 (CA) http://www.microsoft.com/china/smb/issues/sgc/articles/build_ent_root_ca.mspx ...

  5. 使用org.jsoup.Jsoup下载网络中的图片

    package com.enation.newtest; import java.io.BufferedOutputStream; import java.io.File; import java.i ...

  6. [04]JS获取文件大小方法

    </pre><pre name="code" class="html"><input id="file" ty ...

  7. 花匠(NOIP2013)(神奇纯模拟)

    原题传送门 这是道很奇怪的题目,真不知道为什么要放到T2. 也许是T1太水了 首先先看题, 题目要求一个数列中下标为偶数的点比临近的下表为奇数的点更大或更小 其实就是说在原数组中找到一个最长的波动数列 ...

  8. OpenGL入门学习(一)(转)--环境搭建

    http://blog.chinaunix.net/uid-20622737-id-1912797.html 说起编程作图,大概还有很多人想起TC的#include <graphics.h> ...

  9. 【原创】Linux环境下的图形系统和AMD R600显卡编程(7)——AMD显卡的软件中断

    CPU上处理的中断可以分成“硬件中断”和“软件中断”两类,比如网卡产生的中断称为硬件中断,而如果是软件使用诸如"int 0x10"(X86平台上)这样的指令产生中断称为软件中断,硬 ...

  10. Kubernetes网络配置

    #flannel#所有node都安装#下载https://github.com/coreos/flannel/releases#解压并把flanneld和mk-codker-opts.sh复制到/us ...