热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

HTTP协议(RFC2616)中的方法定义

OPTIONSOPTIONS方法表示在由Request-URI标识的请求响应链上关于有效通迅选项信息的请求。该方法允许客户端判断与某个资源相关的选项和或需求或者服务器的能力,而不需要采用资源行为或发起资源获取。该方法的响应不能缓存。如果OPTIONS请求包括实体(如由Content-Length或Transfer-Encoding的存
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设计允许完成下列功能的统一方法:
http://www.devdao.com/
注解存在资源;
上传消息到论坛、新闻组或相似的讨论组;
向数据处理过程提供数据块,如递交表单的结果;
通过追加操作来扩展数据库。
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隧道)。


推荐阅读
  • 本文探讨了在 ASP.NET MVC 5 中实现松耦合组件的方法。通过分离关注点,应用程序的各个组件可以更加独立且易于维护和测试。文中详细介绍了依赖项注入(DI)及其在实现松耦合中的作用。 ... [详细]
  • 如何配置DHCP服务器
    本文详细介绍了配置DHCP服务器的步骤,包括路由器设置和电脑端配置,确保设备能够自动获取IP地址并正常联网。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文详细介绍了Wi-Fi Portal认证协议的原理、流程和相关技术细节,涵盖用户上线认证、下线流程以及数据报文格式等内容。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 本文详细解释了华为ENSP模拟器中常用的命令,涵盖用户模式、系统模式、接口模式和地址池视图模式下的操作。这些命令对于进行计算机网络实验至关重要,帮助用户更好地理解和配置路由器及PC机的通信。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 深入理解一致性哈希算法及其应用
    本文详细介绍了分布式系统中的一致性哈希算法,探讨其原理、优势及应用场景,帮助读者全面掌握这一关键技术。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 本文探讨了2012年4月期间,淘宝在技术架构上的关键数据和发展历程。涵盖了从早期PHP到Java的转型,以及在分布式计算、存储和网络流量管理方面的创新。 ... [详细]
  • 科研单位信息系统中的DevOps实践与优化
    本文探讨了某科研单位通过引入云原生平台实现DevOps开发和运维一体化,显著提升了项目交付效率和产品质量。详细介绍了如何在实际项目中应用DevOps理念,解决了传统开发模式下的诸多痛点。 ... [详细]
  • 本文详细介绍了在 Windows 2000 系统中启用 TELNET 服务时需要注意的 NTLM 配置问题,帮助用户解决常见的身份验证失败错误。 ... [详细]
  • 探讨如何优化 npm 构建过程,提升开发效率,减少构建时间,并介绍自动化部署的最佳实践。 ... [详细]
author-avatar
蒋诽盐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有