`
simgsg
  • 浏览: 96018 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

http协议技术资料

 
阅读更多
<p>http协议中有关http头的技术资料:<br>   HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。<br>通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。<br>1、通用头域<br>通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。<br>Cache-Control头域<br>Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:<br>Public指示响应可被任何缓存区缓存。<br>Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。<br>no-cache指示请求或响应消息不能缓存<br>no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。<br>max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。<br>min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。<br>max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。<br>Date头域<br>Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。<br>Pragma头域<br>Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。<br>2、请求消息<br>请求消息的第一行为下面的格式:<br>Method SP Request-URI SP HTTP-Version CRLF <br>Method表示对于Request-URI完成的方法,这个字段是大小写敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持,其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。HEAD方法也是取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。<br>SP表示空格。<br>Request-URI遵循URI格式,在此字段为星号(*)时,说明请求并不用于某个特定的资源地址,而是用于服务器本身。<br>HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。<br>CRLF表示换行回车符。<br>请求头域允许客户端向服务器传递关于请求或者关于客户机的附加信息。请求头域可能包含下列字段Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If-Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、Proxy-Authorization、Range、Referer、User-Agent。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请求头域,一般将会作为实体头域处理。<br>典型的请求消息:<br>GEThttp://class/download.microtool.de:80/somedata.exe<br>Host:download.microtool.de<br>Accept:*/*<br>Pragma:no-cache<br>Cache-Control:no-cache<br>Referer:http://class/download.microtool.de/<br>User-Agent:Mozilla/4.04[en](Win95;I;Nav)<br>Range:bytes=554554-<br>上例第一行表示HTTP客户端(可能是浏览器、下载程序)通过GET方法获得指定URL下的文件。棕色的部分表示请求头域的信息,绿色的部分表示通用头部分。<br>Host头域<br>Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。<br>Referer头域<br>Referer头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。<br>Range头域<br>Range头域可以请求实体的一个或者多个子范围。例如,<br>表示头500个字节:bytes=0-499<br>表示第二个500字节:bytes=500-999<br>表示最后500个字节:bytes=-500<br>表示500字节以后的范围:bytes=500-<br>第一个和最后一个字节:bytes=0-0,-1<br>同时指定几个范围:bytes=500-600,601-999<br>但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200(OK)。<br>User-Agent头域<br>User-Agent头域的内容包含发出请求的用户信息。<br>3、响应消息<br>响应消息的第一行为下面的格式:<br>HTTP-Version SP Status-Code SP Reason-Phrase CRLF<br>HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。<br>Status-Code是一个三个数字的结果代码。<br>Reason-Phrase给Status-Code提供一个简单的文本描述。Status-Code主要用于机器自动识别,Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用。第一个数字可能取5个不同的值:<br>1xx:信息响应类,表示接收到请求并且继续处理<br>2xx:处理成功响应类,表示动作被成功接收、理解和接受<br>3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理<br>4xx:客户端错误,客户请求包含语法错误或者是不能正确执行<br>5xx:服务端错误,服务器不能正确执行一个正确的请求<br>响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息。响应头域包含Age、Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW-Authenticate。对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。<br>典型的响应消息:<br>HTTP/1.0200OK<br>Date:Mon,31Dec200104:25:57GMT<br>Server:Apache/1.3.14(Unix)<br>Content-type:text/html<br>Last-modified:Tue,17Apr200106:46:28GMT<br>Etag:"a030f020ac7c01:1e9f"<br>Content-length:39725426<br>Content-range:bytes554554-40279979/40279980<br>上例第一行表示HTTP服务端响应一个GET方法。棕色的部分表示响应头域的信息,绿色的部分表示通用头部分,红色的部分表示实体头域的信息。<br>Location响应头<br>Location响应头用于重定向接收者到一个新URI地址。<br>Server响应头<br>Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。<br>4、实体信息<br>请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括Allow、Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义新的实体头,但是这些域可能无法未接受方识别。实体可以是一个经过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,它的长度由Content-Length或Content-Range定义。<br>Content-Type实体头<br>Content-Type 实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型Content-Range实体头<br>Content-Range实体头<br>用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:<br>Content-Range:bytes-unit SP first-byte-pos - last-byte-pos/entity-legth<br>例如,传送头500个字节次字段的形式:Content-Range:bytes0-499/1234如果一个http消息包含此节(例如,对范围请求的响应或对一系列范围的重叠请求),Content-Range表示传送的范围,Content-Length表示实际传送的字节数。<br>Last-modified实体头<br>Last-modified实体头指定服务器上保存内容的最后修订时间。<br>5、 HTTP 头参考(microsoft)<br>HTTP 请求和 HTTP 响应都使用头发送有关 HTTP 消息的信息。头由一系列行组成,每行都包含名称,然后依次是冒号、空格、值。字段可按任何顺序排列。某些头字段既能用于请求头也能用于响应头,而另一些头字段只能用于其中之一。 <br>许多请求头字段都允许客户端在值部分指定多个可接受的选项,有时甚至可以对这些选项的首选项进行排名。多个项以逗号分隔。例如,客户端可以发送包含“Content-Encoding: gzip, compress,”的请求头,表示可以接受各种压缩类型。如果服务器的响应正文使用 gzip 编码,其响应头中将包含“Content-Encoding: gzip”。<br>有些字段可以在单个头中出现多次。例如,头可以有多个“Warning”字段。<br>下表列出了 HTTP 1.1 头字段。注意:有些头字段是 MIME 字段。MIME 字段在 Internet Engineering Task Force (IETF) 文档 RFC 2045 中进行了定义,但也可用于 HTTP 1.1 协议。有关 MIME 和 HTTP 1.1 规范的详细信息,请参阅 IEIF 页。<br>一般头字段<br>一般头字段可用于请求消息和响应消息。<br> 名称          示例值 <br>Cache-Control  "max-age=10" <br>Connection    "close" <br>Date          "Tue, 11 Jul 2000 18:23:51 GMT" <br>Pragma        "no-cache" <br>Trailer         "Date" <br>Transfer-Encoding "chunked" <br>Upgrade       "SHTTP/1.3" <br>Via            "HTTP/1.1 Proxy1, HTTP/1.1 Proxy2" <br>Warning       "112 Disconnected Operation" <br>请求头字段 <br>请求头字段仅用于请求消息。<br>   名称             示例值 <br>Accept           "text/html, image/*" <br>Accept-Charset   "iso8859-5" <br>Accept-Encoding  "gzip, compress" <br>Accept-Language "en, fr" <br>Authorization     [credentials] <br>Content-Encoding "gzip" <br>Expect           "100-continue" <br>From            "<a href="mailto:user@microsoft.com">user@microsoft.com</a>" <br>Host            "<a href="http://www.microsoft.com">www.microsoft.com</a>" <br>If-Match         "entity_tag001" <br>If-Modified-Since "Tue, 11 Jul 2000 18:23:51 GMT" <br>If-None-Match    "entity_tag001" <br>If-Range         "entity_tag001" or "Tue, 11 Jul 2000 18:23:51 GMT" <br>If-Unmodified-Since "Tue, 11 Jul 2000 18:23:51 GMT" <br>Max-Forwards    "3" <br>Proxy-Authorization [credentials] <br>Range       "bytes=100-599" <br>Referer      "<a href="http://www.microsoft.com/resources.asp">http://www.microsoft.com/resources.asp</a>" <br>TE          "trailers" <br>User-Agent   "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)" <br>&gt;&gt;请求头字段的具体含义<br>Accept:浏览器可接受的MIME类型。 <br>Accept-Charset:浏览器可接受的字符集。 <br>Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。<br>Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 <br>Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。 <br>Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。<br>Content-Length:表示请求消息正文的长度。 <br>Cookie:设置cookie,这是最重要的请求头信息之一<br>From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。 <br>Host:初始URL中的主机和端口。 <br>If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。 <br>Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。 <br>Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 <br>User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。<br>UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。 <br>响应头字段 <br>响应头字段仅用于响应消息。<br>  名称          示例值 <br>Accept-Ranges  "none" <br>Age            "2147483648(2^31)" <br>ETag           "b38b9-17dd-367c5dcd" <br>Last-Modified    "Tue, 11 Jul 2000 18:23:51 GMT" <br>Location        "<a href="http://localhost/redirecttarget.asp">http://localhost/redirecttarget.asp</a>" <br>Proxy-Authenticate [challenge] <br>Retry-After      "Tue, 11 Jul 2000 18:23:51 GMT" or "60" <br>Server         "Microsoft-IIS/5.0" <br>Vary            "Date" <br>WWW-Authenticate [challenge] <br>实体头字段 <br>实体头字段可以用于请求消息或响应消息。实体头字段中包含消息实体正文的有关信息,如使用的编码格式。<br>   名称            示例值 <br>Allow              "GET, HEAD" <br>Content-Encoding   "gzip" <br>Content-Language  "en" <br>Content-Length     "8445" <br>Content-Location   "<a href="http://localhost/page.asp">http://localhost/page.asp</a>" <br>Content-MD5       [md5-digest] <br>Content-Range     "bytes 2543-4532/7898" <br>Content-Type      "text/html" <br>Expires           "Tue, 11 Jul 2000 18:23:51 GMT" <br>Last-Modified      "Tue, 11 Jul 2000 18:23:51 GMT" <br>&gt;&gt;实体头字段的具体含义<br>Allow 服务器支持哪些请求方法(如GET、POST等)。<br>Content-Encoding 文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。Java的GZIPOutputStream可以很方便地进行gzip压缩,但只有Unix上的Netscape和Windows上的IE 4、IE 5才支持它。<br>Content-Length 表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。<br>Content-Type 表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。<br>Date 当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。 <br>Expires 应该在什么时候认为文档已经过期,从而不再缓存它? <br>Last-Modified 文档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态。<br>Location 表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。 <br>Refresh 表示浏览器应该在多少时间之后刷新文档,以秒计。除了刷新当前文档之外,你还可以通过setHeader("Refresh", "5; URL=http://host/path")让浏览器读取指定的页面。 <br>注意这种功能通常是通过设置HTML页面HEAD区的<META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://host/path">实现,这是因为,自动刷新或重定向对于那些不能使用CGI或Servlet的HTML编写者十分重要。但是,对于Servlet来说,直接设置Refresh头更加方便。 <br>注意Refresh的意义是“N秒之后刷新本页面或访问指定页面”,而不是“每隔N秒刷新本页面或访问指定页面”。因此,连续刷新要求每次都发送一个Refresh头,而发送204状态代码则可以阻止浏览器继续刷新,不管是使用Refresh头还是<META HTTP-EQUIV="Refresh" ...>。 <br>注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。 <br>请求头示例<br>以下是 HTTP 请求的简单示例。<br>GET /articles/news/today.asp HTTP/1.1<br>Accept: */*<br>Accept-Language: en-us<br>Connection: Keep-Alive<br>Host: localhost<br>Referer: <a href="http://localhost/links.asp">http://localhost/links.asp</a><br>User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)<br>Accept-Encoding: gzip, deflate<br>该请求具有请求行,其中包括方法 (GET)、资源路径 (/articles/news/today.asp) 和 HTTP 版本 (HTTP/1.1)。由于该请求没有正文,故所有请求行后面的内容都是头的一部分。紧接着头之后是一个空行,表示头已结束。<br>响应头示例<br>Web 服务器可以通过多种方式响应前一个请求。假设文件是可以访问的,并且用户具有查看该文件的权限,则响应类似于:<br>HTTP/1.1 200 OK<br>Server: Microsoft-IIS/5.0<br>Date: Thu, 13 Jul 2000 05:46:53 GMT<br>Content-Length: 2291<br>Content-Type: text/html<br>Set-Cookie: ASPSESSIONIDQQGGGNCG=LKLDFFKCINFLDMFHCBCBMFLJ; path=/<br>Cache-control: private<br>...<br>响应的第一行称为状态行。它包含响应所用的 HTTP 版本、状态编码 (200) 和原因短语。示例中包含一个头,其中具有五个字段,接着是一个空行(回车和换行符),然后是响应正文的头两行。<br>有关HTTP头完整、详细的说明,请参见<a href="http://www.w3.org/Protocols/">http://www.w3.org/Protocols/</a>的HTTP规范。<br>附录:HTTP协议状态码的含义<br>  状态代码 状态信息 含义 <br>100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新)<br>101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新<br>200 OK 一切正常,对GET和POST请求的应答文档跟在后面。<br>201 Created 服务器已经创建了文档,Location头给出了它的URL。<br>202 Accepted 已经接受请求,但处理尚未完成。 <br>203 Non-Authoritative Information 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝(HTTP 1.1新)。 <br>204 No Content 没有新文档,浏览器应该继续显示原来的文档。<br>205 Reset Content 没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容(HTTP 1.1新)。 <br>206 Partial Content 客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1新)。 <br>300 Multiple Choices 客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。 <br>301 Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。 <br>302 Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”,出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求<a href="http://host/~user">http://host/~user</a>(缺少了后面的斜杠),有的服务器返回301,有的则返回302。严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。请参见307。 <br>303 See Other 类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取(HTTP 1.1新)。 <br>304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。<br>305 Use Proxy 客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP 1.1新)。<br>307 Temporary Redirect 和302(Found)相同。许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码:当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只能跟随对GET请求的重定向。(HTTP 1.1新) <br>400 Bad Request 请求出现语法错误。 <br>401 Unauthorized 客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。 <br>403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。 <br>404 Not Found 无法找到指定位置的资源。这也是一个常用的应答, <br>405 Method Not Allowed 请求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)对指定的资源不适用。(HTTP 1.1新) <br>406 Not Acceptable 指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容(HTTP 1.1新)。 <br>407 Proxy Authentication Required 类似于401,表示客户必须先经过代理服务器的授权。(HTTP 1.1新)<br>408 Request Timeout 在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。(HTTP 1.1新) <br>409 Conflict 通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。(HTTP 1.1新)<br>410 Gone 所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用。(HTTP 1.1新)<br>411 Length Required 服务器不能处理请求,除非客户发送一个Content-Length头。(HTTP 1.1新)<br>412 Precondition Failed 请求头中指定的一些前提条件失败(HTTP 1.1新)。 <br>413 Request Entity Too Large 目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个Retry-After头(HTTP 1.1新)。 <br>414 Request URI Too Long URI太长(HTTP 1.1新)。 <br>416 Requested Range Not Satisfiable 服务器不能满足客户在请求中指定的Range头。(HTTP 1.1新) <br>500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。 <br>501 Not Implemented 服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求。<br>502 Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。 <br>503 Service Unavailable 服务器由于维护或者负载过重未能应答。<br>504 Gateway Timeout 由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。(HTTP 1.1新) <br>505 HTTP Version Not Supported 服务器不支持请求中所指明的HTTP版本。(HTTP 1.1新)</p>
<p>----------------------------------------------------------------------------</p>
<p><br>个人认为随着web2.0从概念走向大量应用,网络应用将变的更加势不可挡。写web应用程序有2年多了,以前主要是在学校做一些原型系统,对http协议并没有深入的研究。最近的应用中需要区分http请求头中的GET,POST方法,花了点时间研究了一下,参考的主要资料是http协议的rfc文档,网址为<a href="http://www.cs.tut.fi/~jkorpela/forms/methods.html">http://www.cs.tut.fi/~jkorpela/forms/methods.html</a>。<br> 有网络编成经验的人都知道,在form的Method中,可以使用GET,PPOST。至于在什么场合该用什么,就我自己而言过去没有仔细斟酌过,都是看一时兴致。<br>GET和POST的本质区别是什么?<br> 使用GET,form中的数据将编码到url中,而使用POST的form中的数据则在http协议的header中传输。在使用上,当且仅当请求幂等(字面意思是请求任意次返回同样的结果,本质是请求本身不会改变服务器数据和状态)时使用GET,当请求会改变服务器数据或状态时(更新数据,上传文件),应该使用POST。<br>区别使用GET,POST意义何在?<br> 重复访问使用GET方法请求的页面,浏览器会使用缓存处理后续请求。使用POST方法的form提交时,浏览器机遇POST将产生永久改变的假设,将让用户进行提交确认。当编成人员正确的使用GET,POST后,浏览器会给出很好的缓存配合,时响应速度更快。<br>在form提交阶段的差别<br> form提交的第一步是创建数据集,并根据ENCTYPE对数据集进行编码。ENCTYPE有两个值:multipart/form-data,application/x-www-form-urlencoded(默认值),前者可同时用于GET,POST,后者只用于POST。然后进行数据传输--对于GET方法,数据集使用content type application/x-www-form-urlencoded编码并附在url后面,在这种模式下,数据严格限制为ASCII码;对于POST,使用content type编码字符集并将其构造成消息发送。<br>在服务器处理部分的差别<br> 原则上,处理GET和POST请求是没有分别的。但由于数据通过不同的方法编码,需要有不同的解码机制。所以,方法变化将导致处理请求的代码变化。比如对于cgi,处理GET时通过环境变量获得参数,处理POST请求时则通过标准输入(stdin) 获得数据。</p>
<p>从使用经验,我们有如下总结:<br>1、get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。<br>2、对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得。<br>3、get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。<br>4、get安全性非常低,post安全性较高。<br>5、&lt;form method="get" action="a.asp?b=b"&gt;跟&lt;form method="get" action="a.asp"&gt;是一样的,也就是说,action页面后边带的参数列表会被忽视;而&lt;form method="post" action="a.asp?b=b"&gt;跟&lt;form method="post" action="a.asp"&gt;是不一样的。</p>
分享到:
评论

相关推荐

    Http 协议英文资料

    它包含了HTTP的各个方面,是理解HTTP协议的重要参考资料。 总的来说,HTTP协议是互联网通信的核心,理解和掌握其工作原理对于开发Web应用程序、进行网络调试以及优化网络性能至关重要。阅读和学习`rfc2616.pdf`这样...

    HTTP协议详解PDF

    总结来说,这份"HTTP协议详解PDF"是学习HTTP协议的重要参考资料,它可以帮助开发者和网络从业者深入理解HTTP的工作方式,提高他们在Web开发和网络通信中的专业技能。同时,"更多电子资料.docx"可能是与HTTP协议相关...

    网络协议学习资料

    在这个数字化时代,网络已经成为我们生活和工作中不可或缺的一部分,而理解TCP/IP协议是深入研究网络技术的基础。下面将详细阐述TCP/IP协议的重要性和其包含的主要内容。 TCP/IP(Transmission Control Protocol/...

    http协议详解(含中英文两版电子书)

    这份中英文双语版的HTTP协议详解电子书将为你提供全面深入的学习资料,帮助你更好地理解和运用这一网络基石。无论你是初学者还是资深开发者,都值得拥有这样一份高清PDF文档,以便随时查阅和学习。

    HTTP协议详解 学习servlet的必备资料

    HTTP协议详解 学习servlet的必备资料 HTTP(HyperText Transfer Protocol)协议是互联网上应用最广泛的一种网络协议,它是应用层的面向对象协议,因其简洁和高效,被广泛应用于分布式超媒体信息系统。自1990年诞生...

    一本解读tr069协议的技术资料

    TR069 协议技术资料 1. TR069 协议的必要性: 随着 VoIP 和 IPTV 等 IP 终端设备的普及,设备的配置和维护变得越来越困难,大大提高了网络产品运营商的成本。传统的基于 SNMP 的网管系统面对众多的终端设备时显得...

    最全的网络协议分析(内部资料)pdf.rar

    《最全的网络协议分析》是一份珍贵的内部资料,主要涵盖了网络协议的全面解析,对深入理解协议原理和技术有着极高的价值。这份文档详细介绍了网络通信中的多种协议,包括TCP、SOCKET和HTTP等核心协议,对于学习者来...

    3G电信及协议相关资料

    此外,3G技术还涉及到了多种网络架构和协议,如SIP(会话初始化协议),这是一种类似HTTP的文本协议,主要用于建立和管理IP网络中的多媒体通信会话。SIP简化了高级应用的开发,并为Web设计师提供了无线通信协议的...

    HTTP协议中文版

    标题“HTTP协议中文版”表明我们关注的是关于HTTP协议的中文资源,可能是书籍、教程或者是文档,这为中文学习者提供了方便,能够更直观地理解HTTP的工作原理和相关概念。 描述中的“HTTP协议中文版”进一步确认了...

    Java多线程与线程安全实践-基于Http协议的断点续传论文.pdf

    比如1.1、1.2.1、1.2.2等,虽然具体内容未给出,但可以推断这些章节可能包括了对多线程概念的进一步解释、线程安全的实现方法、断点续传的机制、多线程下载的设计细节和实现,以及基于HTTP协议的客户端技术的讨论。...

    Android程序技术:HTTP协议的使用.pptx

    Android程序技术:HTTP协议的使用.pptx

    http协议1.1英文版.rar_http协议英文版

    HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最为广泛的一种网络协议,它定义了...这份“HTTP协议1.1英文版.pdf”文档,无论你是选择英文原版还是中文版,都将是你学习HTTP协议的重要参考资料。

    实验教学资料:深入理解HTTP协议的应用及其各部分组成

    适合人群:适用于希望深入了解和掌握HTTP协议的高年级本科生或者IT行业的技术人员。 使用场景及目标:通过实际的操作,帮助学习者更加直观地理解HTTP协议的工作机制,加深理论知识的理解,能够更好地应用于网络应用...

    MQTT网关协议资料

    在提供的资料中提到了TCP/IP协议栈中的一些关键层次,例如ARP(地址解析协议)、ICMP(互联网控制消息协议)、TCP(传输控制协议)、UDP(用户数据报协议)、HTTP(超文本传输协议)、DHCP(动态主机配置协议)等,...

    图解http_HTTP协议_

    HTTP协议基于TCP/IP通信协议来传递数据,是Web应用的基础。下面将详细解释HTTP协议的主要概念、工作原理及其相关知识点。 一、HTTP协议基本概念 1. 请求和响应:HTTP协议是请求/响应模型。客户端发起一个HTTP请求,...

    透视HTTP协议,关于HTTP协议的深入学习和理解,旨在帮助读者从基础到高级全面掌握HTTP的相关知识

    内容涵盖了HTTP协议的基本结构、工作原理、以及与HTTP相关的技术和工具,如TCP/IP、DNS、SSL/TLS、Web Server等。教程强调理论与实践相结合,通过实际案例分析和实验环境搭建,使读者能够更好地理解和应用HTTP协议。...

    移动通信MAP协议标准

    - **参考文献**:文中提到了多个相关的技术文档和技术报告,如3GPP TS 29.002,这些资料对于深入理解MAP协议及其在网络中的实现至关重要。 #### 三、MAP协议的核心概念与功能 - **核心概念**: - **SS7信令系统**...

    老罗android视频开发源码和ppt--android之http协议编程.rar

    在这个压缩包中,你可以找到他讲解Android HTTP协议编程的视频源码和PPT,这些都是学习过程中非常宝贵的参考资料。 首先,让我们来详细探讨HTTP协议。HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议...

    tcp-ip详解卷1:协议.TCP-IP详解卷2:TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议

    HTTP协议详细讲解了请求方法、状态码、报文格式等内容,对于理解网页工作原理和开发Web应用极其重要。 通过阅读这套书籍,读者不仅可以掌握TCP/IP协议的基本原理,还能了解到实际网络环境中的各种挑战和解决方案。...

    airplay协议源码及详细协议资料

    这些资料通常包括协议的架构、报文格式、传输层协议(如TCP或UDP)、控制协议(如HTTP或RTSP)的使用,以及认证和加密机制的详细描述。对于开发者来说,阅读这些资料能够帮助他们更好地实现AirPlay功能,解决兼容性...

Global site tag (gtag.js) - Google Analytics