热门标签 | 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隧道)。


推荐阅读
  • 初探Hadoop:第一章概览
    本文深入探讨了《Hadoop》第一章的内容,重点介绍了Hadoop的基本概念及其如何解决大数据处理中的关键挑战。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 页面预渲染适用于主要包含静态内容的页面。对于依赖大量API调用的动态页面,建议采用SSR(服务器端渲染),如Nuxt等框架。更多优化策略可参见:https://github.com/HaoChuan9421/vue-cli3-optimization ... [详细]
  • STM32代码编写STM32端不需要写关于连接MQTT服务器的代码,连接的工作交给ESP8266来做,STM32只需要通过串口接收和发送数据,间接的与服务器交互。串口三配置串口一已 ... [详细]
  • 本文详细探讨了 Android Service 组件中 onStartCommand 方法的四种不同返回值及其应用场景。Service 可以在后台执行长时间的操作,无需提供用户界面,支持通过启动和绑定两种方式创建。 ... [详细]
  • Windows环境下Oracle数据库迁移实践
    本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文详细探讨了如何根据不同的应用场景选择合适的PHP版本,包括多版本切换技巧、稳定性分析及针对WordPress等特定平台的版本建议。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • PHP中Smarty模板引擎自定义函数详解
    本文详细介绍了如何在PHP的Smarty模板引擎中自定义函数,并通过具体示例演示了这些函数的使用方法和应用场景。适合PHP后端开发者学习。 ... [详细]
  • Canopy环境安装与使用指南
    《利用Python进行数据分析》一书推荐使用EPDFree版本的环境,然而随着技术的发展,目前更多人倾向于使用Canopy。本文将详细介绍Canopy的安装及使用方法。 ... [详细]
  • 如何在浩方平台畅玩CS1.6
    本文详细介绍了如何在浩方平台上安装、配置并顺利运行CS1.6,包括手动与自动搜索游戏启动器的方法,以及如何选择合适的服务器和房间以获得最佳游戏体验。 ... [详细]
  • MVC模式下的电子取证技术初探
    本文探讨了在MVC(模型-视图-控制器)架构下进行电子取证的技术方法,通过实际案例分析,提供了详细的取证步骤和技术要点。 ... [详细]
  • 本文介绍了Tomcat的基本操作,包括启动、关闭及首次访问的方法,并详细讲解了如何在IDEA中创建Web项目,配置Servlet及其映射,以及如何将项目部署到Tomcat。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
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社区 版权所有