HTTP权威指南 -- HTTP协议有哪些请求方法(Method)?

HTTP规范中定义了一组常用的请求方法。比如, GET方法负责从服务器获取一个
文档, POST方法会向服务器发送需要处理的数据, OPTIONS方法用于确定Web
服务器的一般功能, 或者Web服务器处理特定资源的能力。

HTTP协议下常用的7种请求方法

方法 描述 是否包含主体
GET 从服务器获取一份文档
HEAD 只从服务器获取文档的首部
POST 向服务器发送带要处理的数据
PUT 将请求的主体部分存储在服务器上
TRACE 对可能经过代理服务器传送到服务器上去的报文进行追踪
OPTIONS 决定可以在胀务器上执行哪些方法
DELETE 从服务器上删除一份文档
具体描述:

3.3.2 GET
GET是最常用的方法。通常用千请求服务器发送某个资源。HTIP/1.1要求服务器
实现此方法。图3-7显示了一个例子, 在这个例子中, 客户端用GET方法发起了一
巨习次HTIP请求。
HTTP权威指南 -- HTTP协议有哪些请求方法(Method)?_第1张图片

3.3.3 HEAD
HEAD方法与GET方法的行为很类似, 但服务器在响应中只返回首部。不会返回实
体的主体部分。这就允许客户端在未获取实际资源的情况下, 对资源的首部进行检
查。使用HEAD, 可以:
• 在不获取资源的情况下了解资源的情况(比如, 判断其类型) 1
• 通过查看响应中的状态码, 看看某个对象是否存在,
• 通过查涽首部, 测试资源是否被修改了。
服务器开发者必须确保返回的首部与GET请求所返回的首部完全相同。遵循
HTTP/1.1规范, 就必须实现HEAD方法。图3-8显示了实际的HEAD方法。
HTTP权威指南 -- HTTP协议有哪些请求方法(Method)?_第2张图片

3.3.4 PUT
与GET从服务器读取文档相反,PUT方法会向服务器写入文档。有些发布系统允
许用户创建Web页面, 并用PUT直接将其安装到Web服务器上去。
HTTP权威指南 -- HTTP协议有哪些请求方法(Method)?_第3张图片
PUT方法的语义就是让服务器用请求的主体部分来创建一个由所请求的URL命名
的新文档, 或者, 如果那个URL已经存在的话, 就用这个主体来替代它。
因为PUT允许用户对内容进行修改, 所以很多Web服务器都要求在执行PUT之
前, 用密码登录。在第12章中可以读到更多有关密码认证的内容。

3.3.5 POST
POST方法起初是用来向服务器输入数据的3。实际上, 通常会用它来支持HTML
的表单。表单中填好的数据通常会被送给服务器, 然后由服务器将其发送到它要去
的地方(比如, 送到一个服务器网关程序中, 然后由这个程序对其进行处理)。图
3-10显示了一个用POST方法发起HTTP请求一向服务器发送表单数据一的客
户端。
HTTP权威指南 -- HTTP协议有哪些请求方法(Method)?_第4张图片

3.3.6 TRACE
客户端发起一个请求时, 这个请求可能要穿过防火墙、代理、网关或其他一些应用
程序。每个中间节点都可能会修改原始的HTTP 请求。TRACE方法允许客户端在
最终将请求发送给服务器时, 看看它变成了什么样子。
TRACE请求会在目的服务器端发起一个“环回” 诊断。行程最后一站的服务器会
弹回一条TRACE响应, 井在响应主体中携带它收到的原始请求报文。这样客户端
巨习就可以查看在所有中间HTTP应用程序组成的请求I响应链上, 原始报文是否, 以
及如何被毁坏或修改过。
HTTP权威指南 -- HTTP协议有哪些请求方法(Method)?_第5张图片
TRACE方法主要用于诊断,也就是说, 用千验证请求是否如愿穿过了请求I响应
链。它也是一种很好的工具,可以用来查看代理和其他应用程序对用户请求所产生
效果。
尽管TRACE可以很方便地用千诊断, 但它确实也有缺点, 它假定中间应用程序对
各种不同类型请求( 不同的方法–GET、HEAD、POST等) 的处理是相同的。
很多HITP应用程序会根据方法的不同做出不同的事情一比如, 代理可能会将
POST请求直接发送给服务器, 而将GET请求发送给另一个HITP应用程序(比如
Web缓存)。TRACE并不提供区分这些方法的机制。通常, 中间应用程序会自行决
巨回定对TRACE请求的处理方式。
TRACE请求中不能带有实体的主体部分。TRACE响应的实体主体部分包含了响应
服务器收到的请求的精确副本。

3.3. 7 OPTIONS
OPTIONS方法诮求Web服务器告知其支持的各种功能。可以询问服务器通常支持
哪些方法, 或者对某些特殊资源支持哪些方法。(有些服务器可能只支持对一些特殊
类型的对象使用特定的操作)。
这为客户端应用程序提供了一种手段, 使其不用实际访问那些资源就能判定访问各
种资源的最优方式。阳3-12显示了一个使用OPTIONS方法的请求。
HTTP权威指南 -- HTTP协议有哪些请求方法(Method)?_第6张图片

3.3.8 DELETE
顾名思义,DELETE方法所做的事情就是请服务器删除请求URL所指定的资源。
但是, 客户端应用程序无法保证删除操作一定会被执行。因为HTTP规范允许服务
器在不通知客户端的情况下撤销请求。阳3-13显示了一个DELETE方法实例。
HTTP权威指南 -- HTTP协议有哪些请求方法(Method)?_第7张图片

3.3.9 扩展方法
HTTP被设计成字段可扩展的,这样新的特性就不会使老的软件失效了。扩展方法
指的就是没有在HTIP/1.1规范中定义的方法。服务器会为它所管理的资源实现一
些HTTP服务,这些方法为开发者提供了一种扩展这些HTTP服务能力的手段。表
3-5列出了一些常见的扩展方法实例。这些方法就是WebDAVHTTP扩展(参见第
19章)包含的所有方法,这些方法有助千通过HTTP将Web内容发布到Web服务
器上去。
表3-5 Web发布扩展方法示例

方法 描述
LOCK 允许用户“锁定“ 资源一一比如, 可以在编辑某个资渊的时候将其锁定,以防别人同时对其进行修改
MKCOL 允许用户创建资源
COPY 便于在服务器上复制资源
MOVE 在服务器上移动资源

允许用户“锁定“ 资源一一比如, 可以在编辑某个资渊的时候将其锁定,
以防别人同时对其进行修改
允许用户创建资源
便于在服务器上复制资源
在服务器上移动资源
并不是所有的扩展方法都是在正式规范中定义的,认识到这一点很重要。如果你定
义了一个扩展方法,很可能大部分HTTP应用程序都无法理解。同样,你的HTTP
应用程序也可能会遇到一些其他应用程序在用的,而它并不理解的扩展方法。区9
在这些情况下,最好对扩展方法宽容一些。如果能够在不破坏端到端行为的情况下
将带有未知方法的报文传递给下游服务器的话,代理会尝试若传递这些报文的。否
则,它们会以501 Not Implemented (无法实现)状态码进行响应。最好按惯例”对
所发送的内容要求严一点,对所接收的内容宽容一些” 来处理扩展方法(以及一般
的HTTP扩展)。
HTTP

你可能感兴趣的:(笔记)