HTTP协议(RFC2616)⽅法定义 OPTIONS
OPTIONS ⽅法表⽰在由 Request-URI 标识的请求/响应链上关于有效通迅选项信息的请
求。该⽅法允许客户端判断与某个资源相关的选项和/或需求或者服务器的能⼒,⽽不需要
采⽤资源⾏为或发起资源获取。
该⽅法的响应不能缓存。
如果OPTIONS请求包括实体(如由 Content-Length或 Transfer-Encoding的存在表⽰),
这时媒体类型必须通过 Content-Type 域表⽰。尽管本规范没有定义该实体的⽤法,将来的
HTTP 扩展可能使⽤ OPTIONS 消息体来更详细地查询服务器的信息。服务器不⽀持该扩展
可以丢弃该请求消息体。
如果 Request-URI 是星号(“*”),OPTIONS 请求通常试图应⽤于服务器⽽不是特定的
资源。由于服务器的通迅选项⼀般由资源决定,所以“*”请求只作为“ping”或“no-op”
类型的⽅法有⽤;它没有任何作⽤,除了允许客户端测试服务器的能⼒。例如,可⽤来测试
HTTP/1.1 代理的⼀致性(或缺少因素)。
如果 Request-URI不是星号,OPTIONS请求只应⽤于与该资源通迅时的有效选项。
200 响应应该包括任何头部域来表⽰服务器实现和可应⽤到该资源的可选特性(如
Allow),可能包括该规范没有定义的扩展。如果有响应消息体,则应该还包括通迅选项的信
息。本规范没有定义该消息体的格式,但可能在将来扩展 HTTP时定义。内容协商可⽤于选
择适当的响应格式。如果不包括响应消息体,则响应必须包括域值为“0”的 Content-Length
域。
Max-Forwards 请求头部域可能⽤于请求链中定位特定代理。当代理收到关于允许请求
转发的absoluteURI的OPTIONS请求时, 代理必须检查Max-Forwards域。 如果Max-Forwards
域值为0(“0” ),则代理不能转发该消息;取⽽代之,代理应该以它⾃⼰的通迅选项来响应。
如果 Max-Forwards 域值是⼤于 0 的整数,代理在转发该请求时必须将域值减⼀。如果请求
中不存在 Max-Forwards域,则转发的请求中不能包括Max-Forwards域。
GET
GET ⽅法即获取由 Request-URI 标识的任何信息(以实体的形式)。如果 Request-URI
引⽤某个数据处理过程,则应该以它产⽣的数据作为在响应中的实体,⽽不是该过程的源代
码⽂本,除⾮该过程碰巧输出该⽂本。
如果请求消息包括 If-Modified-Since、If-Unmodified-Since、If-Match、If-None-Match或
者If-Range头部域,则GET⽅法的语义变为“条件GET”。条件 GET⽅法请求只传输在条
件头部域描述情形下的实体。条件 GET ⽅法试图通过允许刷新缓存的实体⽽不需要多次请
求或传输客户端已经拥有的数据来减少⾮必要的⽹络使⽤。
如果请求消息包括 Range头部域,则 GET⽅法的语义变为“局部 GET”。局部 GET请
求只需传输实体的某部分。
HEAD
除了服务器不能在响应中返回消息体,HEAD ⽅法与 GET 相同。HEAD 请求的响应中
的 HTTP 头部中包含的元信息应该与 GET 请求发送的响应中的信息相同。该⽅法可⽤来获
取请求暗⽰实体的元信息, ⽽不需要传输实体本⾝。 该⽅法常⽤来测试超⽂本链接的有效性、
可⽤性和最近的修改。
当响应中包含的信息可⽤于更新先前从该资源缓存的实体时, HEAD 请求的响应可能是
可缓冲的。如果新的域值表明该缓冲的实体与当前实体不同(如可通过 Content-Length、Content-MD5、ETag或Last-Modified的区别来表⽰),这时缓冲服务器必须将该缓存实体作
为过期的。
POST
POST ⽅法⽤来请求原始服务器接受请求中封装的实体作为从属于请求⾏中的
Request-URI标识的副属。POST设计允许完成下列功能的统⼀⽅法:
* 注解存在资源;
* 上传消息到论坛、新闻组或相似的讨论组;
* 向数据处理过程提供数据块,如递交表单的结果;
* 通过追加操作来扩展数据库。
POST ⽅法执⾏的实际功能由服务器决定,且通常取决于 Request-URI。上传的实体从
属于该URI,通过⽂件从属于包含它的⽬录,新的论⽂从属于它上传的新闻组,或记录从属
于数据库的⽅式。
POST ⽅法执⾏的⾏为可能不导致通过 URI 能够标识的某个资源。在这种情况下,200(OK)或 204(No Content)都是适合的响应状态。这取决于描述结果的响应是否包括实体。
如果原始服务器创建了资源,响应应该是 201(Created),且包含描述请求状态的实体,
和新资源的引⽤,和Location头部。
该⽅法的响应不能缓存,除⾮响应包括适当的Cache-Control或 Expires头部域。然⽽,
303(See Other)响应能够⽤来引导⽤户代理获取可缓存的资源。
PUT
PUT⽅法请求以提供的Request-URI存储封装的实体。如果 Request-URI引⽤已经存在
的资源,该封装实体应该被认作原始服务器存储的修改版本。如果 Request-URI没有指向已
存在的资源, 且该URI可以被请求的⽤户代理定义为新的资源, 则原始服务器可以⽤该 URI
创建资源。如果创建了新的资源,则原始服务器必须通过 201(Created)响应提⽰⽤户代理。如果修改了已存在的资源,则应该发送200(OK)或 204(No Content)响应代码来表⽰成功完成了请求。如果不能按 Request-URI创建或修改资源,则应该给出适当的错误响应以反
映出问题的性质。实体的接受⽅不能乎略任何不理解或没有实现的 Content-*(如
Content-Range)头部,在这种情况下必须返回 501(Not Implemented)响应。
如果请求通过缓冲服务器且Request-URI标识出⼀个或多个缓冲的实体,则应该认为这
些实体过期了。该⽅法的响应不可缓存。
POST和PUT请求间的基本区别反映在 Request-URI的不同意义。POST请求中 URI标
识的资源将处理封装的实体。该资源可能是数据接收过程、其它协议的⽹关或接受注解的独
⽴实体。与此对应,PUT请求中的URI标识请求封装的实体——⽤户代理知道该 URI是⽬
标且服务器不能试图将该请求应⽤到其它资源上。 如果服务器希望该请求应⽤到不同的 URI 上,则它必须发送301(Moved Permanently)请求;这时客户代理可以⾃⼰决定是否要重定向该请求。
可以⽤许多不同的 URI 标识同个资源。例如,⼀篇⽂章可以有标识为“当前版本”的
URI,它独⽴于标识每个特别版本的 URI。在这种情况下,使⽤通⽤ URI 的 PUT 请求可能
造成原始服务器定义的⼀些不同URI的结果。
HTTP/1.1 没有定义PUT⽅法如何影响原始服务器的状态。
除了其它特殊实体头部的规定,PUT 请求中的实体头部应该应⽤到 PUT 创建或修改的
资源上。
DELETE
DELETE ⽅法请求原始服务器删除Request-URI 标识的资源。原始服务器可在⼈为⼲涉
下(或其它意思)屏闭该⽅法。客户端不能确保该操作已经提交,即使原始服务器发出的状
态码表明动作已经成功完成也如此。然⽽,在给出响应的时候,服务器不应该表⽰成功,除
重定向过多是什么意思⾮它试图删除该资源或将它移动到不可访问的位置。
如果响应包含描述状态的实体,成功响应应该是200(OK)。如果动作没有实施,则是
202(Accepted)。如果动作已经实施但响应不包含实体,则是 204(No Content)。
如果请求通过缓冲服务器,且Request-URI标识⼀个或多个当前缓存的实体,则应该认
为这些实体已经过期。该⽅法的响应不可缓存。
TRACE
TRACE ⽅法⽤于引起远程的,该请求消息的应⽤层回射。请求的最终接收者应该反射
200(OK)响应,并以该消息作为客户端回收消息的实体。最终接收者是原始服务器或第⼀
个收到请求中的Max-Forwards值为0(0)的代理或⽹关。TRACE 请求不能
包括实体。
TRACE 允许客户端看见请求链上的另⼀端收到了什么,然后使⽤该数据作为测试或诊
断信息。Via 头部域的值有特殊作⽤,将它作为请求链路径。使⽤Max-Forwards
头部域允许客户端限制请求链的长度,这对于测试⽆限循环转发消息的代理链⾮常有⽤。
如请求有效,则响应应该在实体中包含整个请求消息,设置 Content-Type 为
“message/http” 。该⽅法的响应不能缓存。
CONNECT
规范保留 CONNECT ⽅法名。该⽅法⽤于代理,使之能够动态切换隧道(例如 SSL 隧道)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论