HTTP的常见方法

超文本传输协议(HTTP)用于客户端和服务器端之间的通信。

通过请求和响应来交换信息达成通信。请求必须由客户端发出,服务器端回复响应。

下面介绍HTTP中常见的方法:


1.GET:获取资源

从指定的资源(即被URI识别的资源)请求数据,指定的资源服务器解析后返回响应内容。请求服务器发送某个资源。

举例:

请求:     GET /index.html HTTP/1.1

                Host: www.hackr.jp

响应:     返回 index.html 的页面资源


请求:     GET /index.html HTTP/1.1

                Host: www.hackr.jp

                If-Modified-Since: Thu, 12 Jul 2012 07:30:00 GMT

响应:     仅返回2012年7月12日7点30分以后更新过的index.html页面资源。

如果未有内容更新,则以状态码304 Not Modified作为响应返回


2.POST:传输实体主体

向指定的资源提交要被处理的数据。

GET方法强调资源的获取,POST方法强调资源的传输。

举例:

请求:     POST /submit.cgi HTTP/1.1

                Host: www.hackr.jp

                Content-Length: 1560(1560字节的数据)

响应:    返回 submit.cgi 接收数据的处理结果


3.PUT:传输文件

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

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

举例:

请求:     PUT /example.html HTTP/1.1

                Host: www.hackr.jp

                Content-Type: text/html

                Content-Length: 1560(1560 字节的数据)

响应:    响应返回状态码 204 No Content(比如:该html 已存在于服务器上)


POST与PUT比较:

这两个方法咋一看都可以更新资源,但是有本质区别的。

首先解释幂等,幂等是数学的一个用语,对于单个输入或者无输入的运算方法,如果每次都是同样的结果,则称其是幂等的。

对于两个参数,如果传入值相等,结果也等于每个传入值,则称其为幂等的,如max(a,b)

POST:

用于提交请求,可以更新或者创建资源,是非幂等的

举个例子,在我们的支付系统中,一个api的功能是创建收款金额二维码,它和金额相关,每个用户可以有多个二维码,如果连续调用则会创建新的二维码,这个时候就用POST。

PUT:

用于向指定的URI传送更新资源,是幂等的

还是那个例子,用户的账户二维码只和用户关联,而且是一一对应的关系,每次刷新账户的二维码都不变,此时这个api就可以用PUT。


4.HEAD:获得报文首部

HEAD 方法和 GET 方法行为类似,只是不返回报文主体部分,只返回首部。

这就允许客户端在未获取实际资源的情况下,对首部进行检查,确认URI的有效性及资源更新的日期时间等。

举例:

请求:     HEAD /index.html HTTP/1.1

                Host: www.hackr.jp

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


5.DELETE:删除文件

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

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

举例:

请求:     DELETE /example.html HTTP/1.1

                Host: www.hackr.jp

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


6.OPTIONS:询问支持的方法

OPTIONS 方法请求服务器告知其支持的各种功能。可以用来查询针对请求 URI 指定的资源所支持的方法。

举例:

请求:      OPTIONS * HTTP/1.1

                 Host: www.hackr.jp

响应:      HTTP/1.1 200 OK

                 Allow: GET, POST, HEAD,

                 OPTIONS(返回服务器支持的方法)


7.TRACE:追踪路径

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

客户端发起一个请求时,这个请求可能要穿过防火墙、代理、网关或其他一些应用程序。每个中间节点都可能修改原始HTTP请求,TRACE允许客户端在最终将请求发送给服务器时,查询发送出去的请求是怎样被加工修改 / 篡改的。

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

举例:

请求:     TRACE / HTTP/1.1

                Host: hackr.jp

                Max-Forwards: 2

响应:     HTTP/1.1 200 OK

                Content-Type: message/http

                Content-Length: 1024

                TRACE / HTTP/1.1

                Host: hackr.jp

                Max-Forwards: 2(返回响应包含请求内容)


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

CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信。

主要使用SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。

CONNECT 方法的格式如下所示:

CONNECT    代理服务器名:端口号     HTTP版本

举例:

请求:     CONNECT proxy.hackr.jp:8080

                HTTP/1.1

                Host: proxy.hackr.jp

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 8,328评论 6 152
  • 1. 网络基础TCP/IP HTTP基于TCP/IP协议族,HTTP属于它内部的一个子集。 把互联网相关联的协议集...
    yozosann阅读 3,435评论 0 20
  • API定义规范 本规范设计基于如下使用场景: 请求频率不是非常高:如果产品的使用周期内请求频率非常高,建议使用双通...
    有涯逐无涯阅读 2,519评论 0 6
  • 工作流程 一次HTTP操作称为一个事务,其工作过程可分为四步: 1)首先客户机与服务器需要建立连接。只要单击某个超...
    保川阅读 4,581评论 2 14