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请求。
3.3.3 HEAD
HEAD方法与GET方法的行为很类似, 但服务器在响应中只返回首部。不会返回实
体的主体部分。这就允许客户端在未获取实际资源的情况下, 对资源的首部进行检
查。使用HEAD, 可以:
• 在不获取资源的情况下了解资源的情况(比如, 判断其类型) 1
• 通过查看响应中的状态码, 看看某个对象是否存在,
• 通过查涽首部, 测试资源是否被修改了。
服务器开发者必须确保返回的首部与GET请求所返回的首部完全相同。遵循
HTTP/1.1规范, 就必须实现HEAD方法。图3-8显示了实际的HEAD方法。
3.3.4 PUT
与GET从服务器读取文档相反,PUT方法会向服务器写入文档。有些发布系统允
许用户创建Web页面, 并用PUT直接将其安装到Web服务器上去。
PUT方法的语义就是让服务器用请求的主体部分来创建一个由所请求的URL命名
的新文档, 或者, 如果那个URL已经存在的话, 就用这个主体来替代它。
因为PUT允许用户对内容进行修改, 所以很多Web服务器都要求在执行PUT之
前, 用密码登录。在第12章中可以读到更多有关密码认证的内容。
3.3.5 POST
POST方法起初是用来向服务器输入数据的3。实际上, 通常会用它来支持HTML
的表单。表单中填好的数据通常会被送给服务器, 然后由服务器将其发送到它要去
的地方(比如, 送到一个服务器网关程序中, 然后由这个程序对其进行处理)。图
3-10显示了一个用POST方法发起HTTP请求一向服务器发送表单数据一的客
户端。
3.3.6 TRACE
客户端发起一个请求时, 这个请求可能要穿过防火墙、代理、网关或其他一些应用
程序。每个中间节点都可能会修改原始的HTTP 请求。TRACE方法允许客户端在
最终将请求发送给服务器时, 看看它变成了什么样子。
TRACE请求会在目的服务器端发起一个“环回” 诊断。行程最后一站的服务器会
弹回一条TRACE响应, 井在响应主体中携带它收到的原始请求报文。这样客户端
巨习就可以查看在所有中间HTTP应用程序组成的请求I响应链上, 原始报文是否, 以
及如何被毁坏或修改过。
TRACE方法主要用于诊断,也就是说, 用千验证请求是否如愿穿过了请求I响应
链。它也是一种很好的工具,可以用来查看代理和其他应用程序对用户请求所产生
效果。
尽管TRACE可以很方便地用千诊断, 但它确实也有缺点, 它假定中间应用程序对
各种不同类型请求( 不同的方法–GET、HEAD、POST等) 的处理是相同的。
很多HITP应用程序会根据方法的不同做出不同的事情一比如, 代理可能会将
POST请求直接发送给服务器, 而将GET请求发送给另一个HITP应用程序(比如
Web缓存)。TRACE并不提供区分这些方法的机制。通常, 中间应用程序会自行决
巨回定对TRACE请求的处理方式。
TRACE请求中不能带有实体的主体部分。TRACE响应的实体主体部分包含了响应
服务器收到的请求的精确副本。
3.3. 7 OPTIONS
OPTIONS方法诮求Web服务器告知其支持的各种功能。可以询问服务器通常支持
哪些方法, 或者对某些特殊资源支持哪些方法。(有些服务器可能只支持对一些特殊
类型的对象使用特定的操作)。
这为客户端应用程序提供了一种手段, 使其不用实际访问那些资源就能判定访问各
种资源的最优方式。阳3-12显示了一个使用OPTIONS方法的请求。
3.3.8 DELETE
顾名思义,DELETE方法所做的事情就是请服务器删除请求URL所指定的资源。
但是, 客户端应用程序无法保证删除操作一定会被执行。因为HTTP规范允许服务
器在不通知客户端的情况下撤销请求。阳3-13显示了一个DELETE方法实例。
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