`
free9277
  • 浏览: 107418 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

HTTP协议之方法定义

    博客分类:
  • Http
阅读更多
方法定义(Method Definitions
 

  1 安全和等幂(Idempotent)方法... 1

      1.1    安全方法(Safe Methods... 1

      1.2    等幂方法(Idempotent Mehtods... 1

  2  OPTIONS..

  3  GET. 4

  4  HEAD.. 5

  5  POST. 6

  6  PUT. 7

  7  DELETE. 8

  8  TRACE. 9

  9  CONNECT. 10

1 安全和等幂(Idempotent)方法

1.1 安全方法(Safe Methods

安全方法通常是指不影响服务器端资源的行为,它的操作结果仅仅是读取信息。

GETHEAD方法只是执行对服务器没有影响的获取资源动作。这些方法应该被考虑是“安全”的。可以让用户代理调用的其它方法,如:POSTPUTDELETE,这些方法是特殊的,用户代理应该知道这些方法可能会执行不安全的动作。

自然的,保证服务器由于执行GET请求而不能产生副作用是不可能的。实际上,一些动态的资源会考虑这个特性。用户并没有请求这些副作用,因此这些副作用对用户应该是不受影响的。

1.2 等幂方法(Idempotent Mehtods

等幂就是值不变性,相同的请求得到相同的响应结果,不会出现相同的请求返回不同的响应结果。方法GETHEADPUTDELETE都有这种性质。同样,方法OPTIONSTRACE不应该有副作用,因此具有内在的等幂性

2 OPTIONS(选项)

OPTIONS方法表明请求想得到请求或者响应链上关于此请求里的URIRequest-URI)指定资源的通信选项信息。此方法允许客户端去判定请求资源的选项,或者服务器的能力,而不需要利用一个资源动作(使用POSTPUTDELETE方法)或一个资源获取方法

此方法的响应是不能缓存的。

如果OPTIONS请求消息里包括一个实体主体(当请求消息里出现Content-Length或者Transfer-Encoding头域时),那么媒体类型必须通过Content-Type头域指明。虽然此规范没有定义如何使用此实体主体,将来的HTTP扩展可能会利用OPTIONS请求的消息主体去得到服务器得更多信息。一个服务器如果不支持OPTION请求的消息主体,它会遗弃此请求消息主体。

如果请求URI是一个星号("*"),OPTIONS请求将会应用于服务器的所有资源而不是特定资源。因为服务器的通信选项通常依赖于资源,所以“*”请求只能在“ping”或者“no-op”方法时才有用;它干不了任何事情除了允许客户端测试服务器的能力。例如:它能被用来测试代理是否遵循HTTP/1.1

如果请求URI不是一个星号("*"),OPTIONS请求只能应用于请求URI指定资源的选项。

200响应应该包含任何指明选项性质的头域,这些选项性质由服务器实现并且只适合那个请求的资源(例如,Allow头域),但也可能包一些扩展的在此规范里没有定义的头域。如果有响应主体的话也应该包含一些通信选项的信息。这个响应主体的格式并没有在此规范里定义,但是可能会在以后的HTTP里定义。内容协商可能被用于选择合适的响应格式。如果没有响应主体包含,响应就应该包含一个值为“0”的Content-Length头域。

Max-Forwards请求头域可能会被用于针对请求链中特定的代理。当代理接收到一个OPTIONS请求,且此请求的URIabsoluteURI,并且此请求是可以被转发的,那么代理必须要检测Max-Forwards头域。如果Max-Forwards头域的值为“0”,那么此代理不能转发此消息;而是代理应该以它自己的通信选项响应。如果Max-Forwards头域是比0大的整数值,那么代理必须递减此值当它转发此请求时。如果没有Max-Forwards头域出现在请求里,那么代理转发此请求时不能包含Max-Forwards头域。

3 GET

GET方法意思是获取被请求URIRequest-URI)指定的信息(以实体的格式)。如果请求URI涉及到一个数据生成过程,那么这个过程生成的数据应该被作为实体在响应中返回而不是过程的源文本,除非源文本恰好是过程的输出。

如果请求消息包含 If-Modified-Since,If-Unmodified-SinceIf-MatchIf-None-Match或者 If-Range头域,GET的语义将变成“条件(conditionall GET”。一个条件GET方法会请求满足条件头域的实体。条件GET方法的目的是为了减少不必要的网络使用,这通过允许利用缓存里仍然保鲜的实体而不用多次请求或传输客户端已经拥有的实体来实现的。

如果请求方法包含一个Range头域,那么GET方法就变成“部分Get”(partial GET)方法。一个部分GET会请求实体的一部分。 部分GET方法的目的是为了减少不必要的网络使用,可以允许客户端从服务器获取实体的部分数据,而不需要获取客户端本地已经拥有的部分实体数据。

GET请求的响应是可缓存的(cacheable如果此响应满足HTTP缓存的要求。

4 HEAD

HEAD方法和GET方法一致,除了服务器不能在响应里返回消息主体。HEAD请求响应里HTTP头域里的元信息(元信息就是头域信息)应该和GET请求响应里的元信息一致。此方法被用来获取请求实体的元信息而不需要传输实体主体(entity-body此方法经常被用来测试超文本链接的有效性,可访问性,和最近的改变。

HEAD请求的响应是可缓存的,因为响应里的信息可能被缓存用于更新以前那个资源对应缓存的实体.。如果出现一个新的域值指明缓存的实体和当前源服务器上的实体有所不同(可能因为Content-LengthContent-MD5ETagLast-Modified值的改变),那么缓存(cache)必须认为缓存项是过时的(stale)。

5 POST

POST 方法被用于请求源服务器接受请求中的实体作为请求资源的一个新的从属物POST被设计涵盖下面的功能。

已存在的资源的注释。

发布消息给一个布告板,新闻组,邮件列表,或者相似的文章组。

提供一个数据块,如提交一个表单给一个数据处理过程。

通过追加操作来扩展数据库。

POST方法的实际功能是由服务器决定的,并且经常依赖于请求URIRequest-URI)。POST提交的实体是请求URI的从属物,就好像一个文件从属于一个目录,一篇新闻文章从属于一个新闻组,或者一条记录从属于一个数据库。

POST方法执行的动作可能不会对请求URI所指的资源起作用。在这种情况下,200(成功)或者204(没有内容)将是适合的响应状态,这依赖于响应是否包含一个描述结果的实体。

如果资源被源服务器创建,响应应该是201Created)并且包含一个实体,此实体描述了请求的状态。并且引用了这个新资源和一个Location头域。

POST方法的响应是不可缓存的。除非响应里有合适的Cache-Control或者Expires头域。然而,303(见其他)响应能被用户代理利用去获得可缓存的响应。

6 PUT

PUT方法请求服务器去把请求里的实体存储在请求URIRequest-URI)标识下面。请求URIRequest-URI)指定的的资源已经在源服务器上存在,那么此请求里的实体应该被当作是源服务器关于此URI所指定资源实体的最新修改版本如果请求URIRequest-URI)指定的资源不存在,并且此URI被用户代理定义为一个新资源,那么源服务器就应该根据请求里的实体创建一个此URI所标识下的资源。如果一个新的资源被创建了,源服务器必须能向用户代理(user agent 发送201(已创建)响应。如果已存在的资源被改变了,那么源服务器应该发送200Ok)或者204(无内容)响应。如果资源不能根据请求URI创建或者改变,一个合适的错误响应应该给出以反应问题的性质。实体的接收者不能忽略任何它不理解和不能实现的Content-*(如:Content-Range)头域,并且必须返回501(没有被实现)响应。

如果请求穿过一个缓存(cache),并且此请求URIRequest-URI)指示了一个或多个当前缓存的实体,那么这些实体应该被看作是旧的。PUT方法的响应是不可缓存的。

POST方法和PUT方法请求最根本的区别是请求URIRequest-URI)的含义不同。POST请求里的URI指示一个能处理请求实体的资源(此资源可能是一段程序,如jsp里的servlet)。此资源可能是一个数据接收过程,一个网关(gateway,网关和代理的区别是:网关可以进行协议转换,而代理不能,只是起代理的作用,比如缓存服务器其实就是一个代理),或者一个单独接收注释的实体。对比而言,PUT方法请求里的URI标识请求里封装的实体一一用户代理知道URI意指什么,并且服务器不能把此请求应用于其它资源(resource)。如果服务器期望请求被应用于一个不同的URI,那么它必须发送301(永久移动)响应;用户代理可以自己决定是否重定向请求。

一个单独的资源可能会被许多不同的URI指定。如:一篇文章可能会有一个URI指定当前版本,而这个URI区别于这篇文章其它特殊版本的URI。这种情况下,对一个通用URIPUT请求可能会导致其资源的其它URI请求被源服务器重定义。

HTTP/1.1没有定义PUT方法对源服务器的状态影响。

PUT请求必须遵循消息传送的要求。

除非特别指出,PUT方法请求里的实体头域应该被用于资源的创建或修改。

7 DELETE

DELETE方法请求源服务器删除请求URI指定的资源。此方法可能会在源服务器上被人为的干涉(或通过其他方法)。客户端不能保证此操作能被执行,即使源服务器返回成功状态码。然而,服务器不应该指明成功除非它打算删除资源或把此资源移到一个不可访问的位置。

如果响应里包含描述成功的实体,响应应该是200OK);如果DELETE动作还没有执行,应该以202(已接受)响应;如果DELETE请求方法已经执行但响应不包含实体,那么应该以204(无内容)响应。

如果请求穿过缓存,并且请求URIRequest-URI)指定了一个或多个缓存当前实体,那么这些缓存项应该被认为是旧的。DELETE方法的响应是不能被缓存的。

8 TRACE

TRACE方法被用于激发一个远程的,应用层的请求消息回路(TRACE方法让客户端测试到服务器的网络通路,回路的意思如发送一个请返回一个响应,这就是一个请求响应回路)。最后的接收者也许是源服务器,也许是接收到包含Max-Forwards头域值为0请求的代理或网关。TRACE请求不能包含一个实体

TRACE方法允许客户端去了解数据被请求链的另一端接收的情况,并且利用那些数据信息去测试或诊断。Via头域值有特殊的用途,因为它可以作为请求链的跟踪信息。利用Max-Forwards头域允许客户端限制请求链的长度,这是非常有用的,因为可以利用此去测试代理链在无限循环里转发消息。

如果请求是有效的,响应应该在实体主体里包含整个请求消息,并且响应应该包含一个Content-Type头域值为”message/http”的头域。此方法的响应不能被缓存。

9 CONNECT

HTTP1.1协议规范保留了CONNECT方法,此方法是为了能用于能动态切换到隧道的代理。

分享到:
评论

相关推荐

    认清http协议本质

    要认清HTTP协议的本质,我们需要从以下几个关键点入手: 1. 请求与响应模型:HTTP通信基于请求-响应模型。客户端发起一个HTTP请求到服务器,服务器处理请求并返回一个HTTP响应。请求由方法(如GET、POST)、URL、...

    HTTP协议介绍[定义].pdf

    HTTP 协议是目前最广泛使用的网络协议之一,它允许不同的设备和系统之间进行通信,实现了万维网的基础架构。下面是关于 HTTP 协议的一些重要知识点: 什么是 HTTP 协议? HTTP 协议是一种无状态的请求/响应协议,...

    SFP+协议规范,包括速度、引脚定义

    2. **速率和编码**:SFF-8431定义了不同速率下的编码方式,如8b/10b编码,这是一种用于差分信号的数据编码方法,可以保证信号的直流平衡,减少干扰。 3. **信号质量**:规范对眼图、抖动、噪声等参数设定了严格的...

    http协议中文版(http协议中文版)

    4. **标准方法**:HTTP定义了一组标准的方法,如GET、POST、PUT、DELETE等,这些方法定义了客户端和服务器之间的交互行为。 在HTTP协议中文版中,可能涵盖以下内容: 1. **HTTP版本**:从HTTP/0.9到HTTP/1.1,再到...

    HTTP协议详解_HTTP协议_

    HTTP协议的工作原理: 1. 请求过程:当用户在浏览器中输入URL并按下回车键时,浏览器作为客户端(Client)构造一个HTTP请求报文,包括方法(GET、POST等)、URL、协议版本、头部信息和请求主体(如果有的话)。然后...

    HTTP协议.zip_HTTP_HTTP协议

    1. **请求方法**: HTTP协议定义了多种请求方法,最常见的是GET和POST。GET用于获取资源,而POST用于提交数据,创建新资源。其他方法包括PUT、DELETE、HEAD、OPTIONS等。 2. **请求头**: 客户端在发送请求时会包含...

    基于http协议的自定义协议封装

    HTTP协议的请求由方法(如GET、POST)、URL、HTTP版本、头部和可选的实体主体组成,响应则包含状态码、头部和可选的实体主体。 当我们需要构建一个基于HTTP的自定义协议时,通常会涉及到以下几个方面: 1. **协议...

    JavaWeb之http协议

    本文将围绕“JavaWeb之http协议”这一主题,结合提供的标签“源码”和“工具”,深入讲解HTTP协议的核心概念、工作原理以及在JavaWeb开发中的应用。 HTTP协议是一种应用层协议,基于TCP/IP通信协议来传输数据,主要...

    深入了解http协议

    HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,它定义...HTTP协议的深入学习还包括请求方法、状态码、头部字段、缓存策略、分块传输编码等多个方面,这些都是构建高效、安全的Web服务的关键组成部分。

    http协议中英文版

    HTTP协议有多种请求方法,其中最常见的是GET和POST。GET方法用于获取资源,数据附在URL后面,通常用于浏览网页;POST方法用于向服务器提交数据,常用于表单提交。除此之外,还有PUT、DELETE、HEAD等其他方法,用于...

    HTTP协议详解及RFC2616(HTTP)中文版

    HTTP协议定义了多种请求方法,常见的有GET、POST、PUT、DELETE等: - **GET**:获取资源,是最常用的请求方法,无副作用。 - **POST**:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在...

    张孝祥_HTTP协议详解

    HTTP协议定义了多种请求方法,其中最常见的是GET和POST: - GET:获取资源,所有参数都在URL中。 - POST:提交数据到指定资源,通常用于表单提交,数据在请求体中。 四、HTTP状态码 HTTP状态码是服务器对客户端请求...

    HTTP协议详解PDF

    这份"HTTP协议详解PDF"文档应该包含对HTTP协议的全面解析,涵盖了其核心概念、工作原理、请求与响应报文结构、状态码、首部字段等内容。 在HTTP协议中,主要有两种类型的操作:GET和POST。GET方法用于获取资源,而...

    TR069交互协议-TR098节点定义规范

    TR098节点定义规范是TR069协议的一个重要组成部分,主要针对家庭网关设备的管理和控制。TR069是一种广泛应用于远程管理和配置家庭网络设备的协议,特别是路由器和网关设备。该协议旨在提供一个标准接口,使得服务...

    HTTP协议详解电子书

    RFC2616是HTTP/1.1的官方规范,其中详细定义了HTTP协议的各个方面,包括请求方法、状态码分类、报文结构、首部字段等。请求方法主要有GET(获取资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)等。...

    HTTP协议详解.pdf

    * 请求行(Request Line):指明了请求的方法、资源的 URL 和协议版本。 * 请求头(Request Header):包含了客户端的一些信息,如用户代理、语言、Cookies 等。 * 请求体(Request Body):包含了客户端发送给...

    HTTP/http协议中文手册

    HTTP协议是基于TCP/IP通信协议来传递数据的,主要用于Web浏览器与Web服务器之间的信息传输。 在HTTP协议中,通信过程通常由客户端发起请求(Request),服务器接收请求并返回响应(Response)。请求通常包含方法...

    Http协议中文版

    **Http协议中文版** Http(超文本传输协议)是互联网上应用最为广泛的一种网络协议,它定义了客户端(浏览器)和服务器之间的通信格式。本文将深入解析Http协议的基础概念、工作原理及其在实际应用中的重要性。 **...

Global site tag (gtag.js) - Google Analytics