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


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了如何在具备多个IP地址的FTP服务器环境中,通过动态地址端口复用和地址转换技术优化网络配置。重点讨论了2Mb/s DDN专线连接、Cisco 2611路由器及内部网络地址规划。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 邮件(带附件,模拟文件上传,跨服务器)发送核心代码1.测试邮件发送附件接口***测试邮件发送附件*@parammultipartFile*@return*@RequestMappi ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文探讨了在不使用服务器控件的情况下,如何通过多种方法获取并修改页面中的HTML元素值。除了常见的AJAX方式,还介绍了其他可行的技术方案。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 解决MongoDB Compass远程连接问题
    本文记录了在使用阿里云服务器部署MongoDB后,通过MongoDB Compass进行远程连接时遇到的问题及解决方案。详细介绍了从防火墙配置到安全组设置的各个步骤,帮助读者顺利解决问题。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
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社区 版权所有