<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>cfly</title>
    <description></description>
    <link>http://cfly.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>HTTP协议精解</title>
        <author>cfly</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cfly.javaeye.com">cfly</a>&nbsp;
          链接：<a href="http://cfly.javaeye.com/blog/151911" style="color:red;">http://cfly.javaeye.com/blog/151911</a>&nbsp;
          发表时间: 2007年12月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>WEB服务器和浏览器之间的一问一答的交互过程也得遵循一定的规则，这个规则就是HTTP协议。它是TCP/IP协议集中的一个应用层协议，用于定 义浏览  器和WEB服务器之间交换数据过程以及数据本身的格式。现在被广泛使用的HTTP/1.1相对HTTP/1.0而言，最大的特点就是支持持续连接。</p>
<p>1.HTTP/1.0的会话方式：</p>
<br />
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  建立连接，发送请求信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  --------------------------------------------------------------------------&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  客户机&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  服务器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;--------------------------------------------------------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  关闭连接，回送响应消息</p>
<br />
<p>每次连接只处理一个请求，即使是对同一个网站的每一个页面的访问，浏览器和WEB服务器都要建立一次单独的连接。</p>
<br />
<p>2.HTTP/1.1的会话方式：</p>
<br />
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  建立连接，第1个请求信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  --------------------------------------------------------------------------&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ............<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  发送第N请求信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  --------------------------------------------------------------------------&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  客户机&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 回送第1次响应&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  服务器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;--------------------------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ..............<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  回应第n次响应<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;--------------------------------------------------------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  发送关闭连接请求&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  --------------------------------------------------------------------------&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  关闭连接&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;--------------------------------------------------------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<br />
<p>HTTP/1.1支持持久连接，在一个TCP连接上可以传送多个HTTP请求和响应，减少了建立和关闭连接的消耗和延迟。一个包含有许多图象的网页  文件的多个请求和响应可以在一个连接中传输，但每个单独的网页文件的请求和响应仍然需要使用各自的连接，还允许客户端不用等待上一次请求结果返回就可以发  送下一个请求。</p>
<br />
<p>HTTP消息的格式：<br />
一个完整的请求消息包括：一个请求行、若干消息头、以及实体内容。<br />
一个完整的响应消息包括：一个状态行、若干消息头、以及实体内容。<br />
这在前面已经有过简单的介绍。下面对这几个部分再做个详细的解说：<br />
1.请求行：包括三个部分，即请求方式、资源路径、以及使用的HTTP协议版本。语法如下：请求方式  资源路径 HTTP版本号&lt;CRLF&gt;,其中&lt;CRLF&gt;表示回车和换行这两个字符的组合。HTTP请求方式包括POST、GET、  HEAD、OPTIONS、DELETE、TRACE和PUT几种。常用的是前两种。<br />
2.状态行：包括HTTP协议的版本号、一个状态码、以及对状态码进行描述的文本信息。<br />
语法如下：HTTP版本号  状态码 原因叙述&lt;CRLF&gt;</p>
<br />
<p>使用GET和POST传递参数：<br />
在URL地址后面可以附加一些参数，每个参数都由参数名和参数值组成，中间用＝分隔，各个参数用&amp;分隔，URL地址和整个参数之间用？分隔，如下所示：<br />
<a href="http://www.it315.org/servlet/ParamsServlet?param1=aaa&amp;param2=bbb">http://www.it315.org/servlet/ParamsServlet?param1=aaa&amp;param2=bbb</a><br />
使用GET传递参数的数据量是有限的，一般限制在1KB以下。使用POST比GET要大的多。是没有限制的。但是必须设置Content=Type消息头  为&lsquo;application/x-www-form-urlencoded&rsquo;和设置Content-Length消息头为实体内容的长度。</p>
<br />
<p>响应状态码：<br />
200：表示一切正常，返回的是正常请求结果。<br />
404：表示服务器上不存在客户机上所请求的资源，这个状态码在浏览网页时最常见的。</p>
<br />
<p>通用信息头：<br />
Cache-Control：此字段用于通知客户机和服务器之间的代理服务器如何使用已缓存的页面。<br />
Connection：用于指定处理完本次请求/响应后，客户端和服务器是否还要继续保持连接。<br />
Date：用于表示HTTP消息产生的当前时间。<br />
Transfer-Encoding：用于指定实体内容的传输编码方式。</p>
<br />
<p>请求头：<br />
Accept：用于指定客户端程序能够处理的MIME类型。有多个时用逗号隔开。<br />
Accept-Charset：指出客户端程序可以使用的字符集。有多个时用逗号隔开。<br />
Accept-Encoding：指定客户机能够进行解码的数据编码方式。有多个时用逗号隔开。<br />
Accept-Language：指定客户机期望服务器返回哪个国家语言的文档。有多个时用逗号隔开。<br />
Host：指定资源所在的主机名和端口号。</p>
<br />
<p>响应头：<br />
Accept-Range：用于说明当前WEB服务器是否接受Range请求和Range请求中指定的数据的单位。<br />
Location：用于通知客户机应该到哪个新的地址去获取文档。由于当前响应并没有直接返回内容给客户机，所以使用Location头的HTTP消息不应该有实体内容，由此可见，在消息头中不能同时出现Location和Contect-Type这两个头自段。</p>
<br />
<p>实体头：<br />
Allow：用于指定客户机请求的资源所支持的请求方法。<br />
Content-Encoding：用于指定实体内容的压缩编码方式。<br />
Content-Language：用于指定返回的网页文档的国家语言类型。<br />
Content-Length：用于指定实体内容的长度。<br />
Content-Location：用于指定响应消息中所封装的实体内容的实际位置路径。<br />
Content-Type：用于指定实体内容的MIME类型。客户机通过检查服务器响应消息的此字段中的MIME类型就能知道实体内容的数据格式和知道以  何种方式来进行处理了。&lt;Tomcat&gt;安装目录下的conf目录下的web.xml文件里面就定义了很多的类型。<br />
Last-Modified：用于指定文档的最后修改时间。</p>
<br />
<p>扩展头：<br />
Refresh：此字段告诉浏览器隔多长时间刷新。</p>
<p>下面简要介绍一下HTTP协议的请求头和应答头，这将有助于你进一步了解某些测试工具录制脚本的原理，便于编辑性能测试脚本。请求头和应答头都将用实例来说明。<br />
<br />
请求消息举例：<br />
POST  /bbs/login2.asp?action=chk HTTP/1.1<br />
Accept: image/gif, image/x-xbitmap,  image/jpeg, image/pjpeg, application/vnd.ms-excel,  application/vnd.ms-powerpoint, application/msword,  application/x-shockwave-flash, */*<br />
Referer:  http://127.0.0.1/inpage.asp<br />
Accept-Language: zh-cn<br />
Content-Type:  application/x-www-form-urlencoded<br />
Accept-Encoding: gzip,  deflate<br />
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1  1.3))<br />
Host: 127.0.0.1Content-Length: 69<br />
Connection:  Keep-Alive<br />
Cache-Control: no-cache<br />
Cookie: aspsky=StatUserID=2200878793;  Cookie1=y;  ASPSESSIONIDQQTBSRCB=BHHIOGHAGFCKKNCGLLHDFHBM<br />
username=snappyboy&amp;CookieDate=0&amp;password=123456&amp;Submit3=%B5%C7%C2%BC<br />
<br />
请求消息的第一行为下面的格式：<br />
<br />
Method  Request-URI HTTP-Version CRLF<br />
<br />
例如：POST /bbs/login2.asp?action=chk  HTTP/1.1<br />
<br />
Method表示对于Request-URI完成的方法，这个字段是大小写敏感的，包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。<br />
方法GET和HEAD应该被所有的通用WEB服务器支持，其他所有方法的实现是可选的。<br />
GET方法取回由Request-URI标识的信息。<br />
HEAD方法也是取回由Request-URI标识的信息，只是可以在响应时，不返回消息体。<br />
POST方法可以请求服务器接收包含在请求中的实体信息，可以用于提交表单，向新闻组、BBS、邮件群组和数据库发送消息。<br />
<br />
Request-URI遵循URI格式，在此字段为星号（*）时，说明请求并不用于某个特定的资源地址，而是用于服务器本身。<br />
<br />
HTTP-Version表示支持的HTTP版本，例如为HTTP/1.1。<br />
<br />
CRLF表示换行回车符。请求头域允许客户端向服务器传递关于请求或者关于客户机的附加信息。请求头域可能包含下列字段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 />
Host头域<br />
Host头域指定请求资源的Intenet主机和端口号，必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域，否则系统会以400状态码返回。<br />
<br />
Referer头域<br />
Referer头域允许客户端指定请求uri的源资源地址，这可以允许服务器生成回退链表，可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址，Referer不能被发送。如果指定的是部分uri地址，则此地址应该是一个相对地址。<br />
<br />
Range头域<br />
Range头域可以请求实体的一个或者多个子范围。例如，<br />
表示头500个字节：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  bytes = 0 - 499<br />
表示第二个500字节：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bytes = 500 - 999<br />
表示最后500个字节：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  bytes = -500<br />
表示500字节以后的范围：&nbsp;&nbsp; bytes = 500-<br />
第一个和最后一个字节：&nbsp;&nbsp;&nbsp;&nbsp; bytes = 0-0 ,  -1<br />
同时指定几个范围：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bytes = 500-600,  601-999<br />
但是服务器可以忽略此请求头，如果无条件GET包含Range请求头，响应会以状态码206（Partial  Content）返回而不是以200（OK）。<br />
<br />
User-Agent头域<br />
User-Agent头域的内容包含发出请求的用户信息。<br />
<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 />
<br />
应答消息举例：<br />
HTTP/1.1  200 OK<br />
Server: Microsoft-IIS/5.0<br />
Date: Sat, 15 Jan 2005 15:36:26  GMT<br />
Content-Length: 31401<br />
Content-Type: text/html<br />
Cache-control:  private<br />
<br />
&lt;html&gt;<br />
&lt;body&gt;<br />
省略内容<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
响应消息的第一行为下面的格式：<br />
HTTP-Version&nbsp;&nbsp;  Status-Code&nbsp;&nbsp; Reason-Phrase  CRLF<br />
HTTP-Version表示支持的HTTP版本，例如为HTTP/1.1。<br />
Status-Code是一个三个数字的结果代码。<br />
Reason-Phrase给Status-Code提供一个简单的文本描述。<br />
Status-Code主要用于机器自动识别，Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别，后两个数字没有分类的作用。第一个数字可能取5个不同的值：<br />
1xx  : 信息响应类，表示接收到请求并且继续处理<br />
2xx : 处理成功响应类，表示动作被成功接收、理解和接受<br />
3xx :  重定向响应类，为了完成指定的动作，必须接受进一步处理<br />
4xx : 客户端错误，客户请求包含语法错误或者是不能正确执行<br />
5xx :  服务端错误，服务器不能正确执行一个正确的请求<br />
<br />
响应头域允许服务器传递不能放在状态行的附加信息，这些域主要描述服务器的信息和Request-URI进一步的信息。响应头域包含Age、Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、  Warning、WWW-Authenticate。对响应头域的扩展要求通讯双方都支持，如果存在不支持的响应头域，一般将会作为实体头域处理。<br />
<br />
Location响应头<br />
Location响应头用于重定向接收者到一个新URI地址。<br />
<br />
Server响应头<br />
Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释，产品标识一般按照重要性排序。<br />
<br />
实体<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 />
<br />
Content-Type实体头<br />
Content-Type实体头用于向接收方指示实体的介质类型，指定HEAD方法送到接收方的实体介质类型，或GET方法发送的请求介质类型  Content-Range实体头<br />
<br />
Content-Range实体头用于指定整个实体中的一部分的插入位置，他也指示了整个实体的长度。在服务器向客户返回一个部分响应，它必须描述响应覆盖的范围和整个实体长度。一般格式：<br />
<br />
Content-Range:  bytes-unit SP first-byte-pos  -last-byte-pos/entity-legth<br />
例如，传送头500个字节次字段的形式：Content-Range: bytes  0-499/1234 如果一个http消息包含此节（例如，对范围请求的响应或对一系列范围的重叠请求），Content-Range表示传送的范围，Content-  Length表示实际传送的字节数。<br />
<br />
Last-modified实体头<br />
Last-modified实体头指定服务器上保存内容的最后修订时间。<br />
<br />
如何获取这些信息呢？<br />
有许多的工具可以获得这些信息，一方面可以使用脚本录制工具，比如WAS、LoadRunner、Jmeter等，但是他们都是必须通过浏览器来录制（针对web协议部分的）。另外还可以借助于网络拦截软件来检测HTTP协议的活动情况，我使用的是Visual  Sniffer（是用于拦截通过网络传输的TCP/IP/UDP/ICMP等数据包的一个工具），它可以监测到通过本机的使用HTTP协议交互的数据。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：www-Authenticate: Basic realm=zxm.mgmt</p>
<p>在HTTP/1.1中用到的头标<br />
<br />
头标格式：&lt;name&gt;:&lt;value&gt;&lt;CRLF&gt;<br />
<br />
Accept&nbsp;&nbsp;&nbsp;  <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 定义客户端可以处理的媒体类型，按优先级排序；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在一个以逗号为分隔的列表中，可以定义多种类型和使用通配符。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Accept:  image/jpeg,image/png,*/*<br />
Accept-Charset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  定义客户端可以处理的字符集，按优先级排序；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在一个以逗号为分隔的列表中，可以定义多种类型和使用通配符。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Accept-Charset:  iso-8859-1,*,utf-8<br />
Accept-Encoding&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  定义客户端可以理解的编码机制。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：Accept-Encoding:gzip,compress<br />
Accept-Language&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  定义客户端乐于接受的自然语言列表。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Accept-Language:  en,de<br />
Accept-Ranges&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  一个响应头标，它允许服务器指明：<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将在给定的偏移和长度处，为资源组成部分的接受请求。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  该头标的值被理解为请求范围的度量单位。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如Accept-Ranges: bytes或Accept-Ranges:  none<br />
Age&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  允许服务器规定自服务器生成该响应以来所经过的时间长度，<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  以秒为单位。该头标主要用于缓存响应。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Age: 30<br />
Allow&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个响应头标，它定义一个由位于请求URI中的次源所支持的HTTP方法列表。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：Allow: GET,PUT<br />
aUTHORIZATION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  一个响应头标，用于定义访问一种资源所必需的授权<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （域和被编码的用户ID与口令）。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：Authorization: Basic YXV0aG9yOnBoaWw=<br />
Cache-Control&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个用于定义缓存指令的通用头标。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Cache-Control:  max-age=30<br />
Connection&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  一个用于表明是否保存socket连接为开放的通用头标。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Connection: close或Connection:  keep-alive<br />
Content-Base&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  一种定义基本URI的实体头标，为了在实体范围内解析相对URLs。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  如果没有定义Content-Base头标解析相对URLs，<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用Content-Location  URI（存在且绝对）或使用URI请求。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Content-Base:  Http://www.myweb.com<br />
Content-Encoding&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  一种介质类型修饰符，标明一个实体是如何编码的。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Content-Encoding:  zip<br />
Content-Language&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  用于指定在输入流中数据的自然语言类型。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Content-Language:  en<br />
Content-Length&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  指定包含于请求或响应中数据的字节长度。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：Content-Length:382<br />
Content-Location<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  指定包含于请求或响应中的资源定位（URI）。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  如果是一绝。对URL它也作为被解析实体的相对URL的出发点。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Content-Location:  http://www.myweb.com/news<br />
Content-MD5<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  实体的一种MD5摘要，用作校验和。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 发送方和接受方都计算MD5摘要，接受方将其计算的值与<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  此头标中传递的值进行比较。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Content-MD5: &lt;base64 of 128 MD5  digest&gt;<br />
Content-Range<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  随部分实体一同发送；标明被插入字节的低位与高位字节偏移，<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也标明此实体的总长度。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：Content-Range: 1001-2000/5000<br />
Contern-Type<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  标明发送或者接收的实体的MIME类型。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Content-Type:  text/html<br />
Date<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 发送HTTP消息的日期。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Date:  Mon,10PR 18:42:51 GMT<br />
ETag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  一种实体头标，它向被发送的资源分派一个唯一的标识符。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  对于可以使用多种URL请求的资源，ETag可以用于确定实<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 际被发送的资源是否为同一资源。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：ETag: &quot;208f-419e-30f8dc99&quot;<br />
Expires<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  指定实体的有效期。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Expires: Mon,05 Dec 2008 12:00:00  GMT<br />
Form<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一种请求头标，给定控制用户代理的人工用户的电子邮件地址。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：From: webmaster@myweb.com<br />
Host<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  被请求资源的主机名。对于使用HTTP/1.1的请求而言，<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此域是强制性的。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：Host: www.myweb.com<br />
If-Modified-Since<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  如果包含了GET请求，导致该请求条件性地依赖于资源上次修改日期。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  如果出现了此头标，并且自指定日期以来，此资源已被修改，<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应该反回一个304响应代码。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：If-Modified-Since: Mon,10PR 18:42:51 GMT<br />
If-Match<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  如果包含于一个请求，指定一个或者多个实体标记。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只发送其ETag与列表中标记区配的资源。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：If-Match: &quot;208f-419e-308dc99&quot;<br />
If-None-Match<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  如果包含一个请求，指定一个或者多个实体标记。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  资源的ETag不与列表中的任何一个条件匹配，操作才执行。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：If-None-Match:  &quot;208f-419e-308dc99&quot;<br />
If-Range<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  指定资源的一个实体标记，客户端已经拥有此资源的一个拷贝。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  必须与Range头标一同使用。如果此实体自上次被客户端检索以来，<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  还不曾修改过，那么服务器只发送指定的范围，否则它将发送整个资源。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Range:  byte=0-499&lt;CRLF&gt;If-Range:&quot;208f-419e-30f8dc99&quot;<br />
If-Unmodified-Since<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  只有自指定的日期以来，被请求的实体还不曾被修改过，才会返回此实体。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：If-Unmodified-Since:Mon,10PR 18:42:51 GMT<br />
Last-Modified<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  指定被请求资源上次被修改的日期和时间。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Last-Modified: Mon,10PR 18:42:51  GMT<br />
Location<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于一个已经移动的资源，用于重定向请求者至另一个位置。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  与状态编码302（暂时移动）或者301（永久性移动）配合使用。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Location:  http://www2.myweb.com/index.jsp<br />
Max-Forwards<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  一个用于TRACE方法的请求头标，以指定代理或网关的最大数目，该请求通过网关才得以路由。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在通过请求传递之前，代理或网关应该减少此数目。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Max-Forwards:  3<br />
Pragma<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个通用头标，它发送实现相关的信息。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Pragma:  no-cache<br />
Proxy-Authenticate<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  类似于WWW-Authenticate，便是有意请求只来自请求链（代理）<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 的下一个服务器的认证。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：Proxy-Authenticate: Basic  realm-admin<br />
Proxy-Proxy-Authorization<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  类似于授权，但并非有意传递任何比在即时服务器链中更进一步的内容。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Proxy-Proxy-Authorization:  Basic YXV0aG9yOnBoaWw=<br />
Public<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  列表显示服务器所支持的方法集。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Public:  OPTIONS,MGET,MHEAD,GET,HEAD<br />
Range<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  指定一种度量单位和一个部分被请求资源的偏移范围。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Range:  bytes=206-5513<br />
Refener<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  一种请求头标域，标明产生请求的初始资源。对于HTML表单，它包含此表单的Web页面的地址。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Refener:  http://www.myweb.com/news/search.html<br />
Retry-After<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  一种响应头标域，由服务器与状态编码503（无法提供服务）配合发送，<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  以标明再次请求之前应该等待多长时间。此时间即可以是一种日期，也可以是一种秒单位。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Retry-After:  18<br />
Server<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一种标明Web服务器软件及其版本号的头标。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Server:  Apache/2.0.46(Win32)<br />
Transfer-Encoding<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  一种通用头标，标明对应被接受方反向的消息体实施变换的类型。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Transfer-Encoding:  chunked<br />
Upgrade<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  允许服务器指定一种新的协议或者新的协议版本，与响应编码101（切换协议）配合使用。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Upgrade:  HTTP/2.0<br />
User-Agent<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 定义用于产生请求的软件类型（典型的如Web浏览器）。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：User-Agent: Mozilla/4.0(compatible; MSIE 5.5; Windows NT;  DigExt)<br />
Vary<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  一个响应头标，用于表示使用服务器驱动的协商从可用的响应表示中选择响应实体。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Vary: *<br />
Via  <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个包含所有中间主机和协议的通用头标，用于满足请求。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：Via: 1.0 fred.com,  1.1 wilma.com<br />
Warning <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用于提供关于响应状态补充信息的响应头标。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例如：Warning: 99 www.myweb.com Piano needs  tuning<br />
www-Authenticate<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  一个提示用户代理提供用户名和口令的响应头标，与状态编码401（未授权）<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  配合使用。响应一个授权头标。<br />
<br />
HTTP响应码<br />
响应码由三位十进制数字组成，它们出现在由HTTP服务器发送的响应的第一行。<br />
<br />
响应码分五种类型，由它们的第一位数字表示：<br />
1.1xx：信息，请求收到，继续处理<br />
2.2xx：成功，行为被成功地接受、理解和采纳<br />
3.3xx：重定向，为了完成请求，必须进一步执行的动作<br />
4.4xx：客户端错误，请求包含语法错误或者请求无法实现<br />
5.5xx：服务器错误，服务器不能实现一种明显无效的请求<br />
<br />
下表显示每个响应码及其含义：<br />
100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  继续<br />
101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 分组交换协<br />
200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK<br />
201&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  被创建<br />
202&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 被采纳<br />
203&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 非授权信息<br />
204&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  无内容<br />
205&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 重置内容<br />
206&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 部分内容<br />
300&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  多选项<br />
301&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 永久地传送<br />
302&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 找到<br />
303&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  参见其他<br />
304&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 未改动<br />
305&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用代理<br />
307&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  暂时重定向<br />
400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 错误请求<br />
401&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 未授权<br />
402&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  要求付费<br />
403&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 禁止<br />
404&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 未找到<br />
405&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  不允许的方法<br />
406&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不被采纳<br />
407&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要求代理授权<br />
408&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  请求超时<br />
409&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 冲突<br />
410&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 过期的<br />
411&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  要求的长度<br />
412&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前提不成立<br />
413&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请求实例太大<br />
414&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  请求URI太大<br />
415&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不支持的媒体类型<br />
416&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 无法满足的请求范围<br />
417&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  失败的预期<br />
500&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 内部服务器错误<br />
501&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 未被使用<br />
502&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  网关错误<br />
503&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不可用的服务<br />
504&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 网关超时<br />
505&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  HTTP版本未被支持</p>
<br />
【转载】http://hi.baidu.com/freezesoul/blog/item/6c1cf0de51057d5794ee37b8.html
          <br/>
          <span style="color:red;">
            <a href="http://cfly.javaeye.com/blog/151911#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 30 Dec 2007 01:22:31 +0800</pubDate>
        <link>http://cfly.javaeye.com/blog/151911</link>
        <guid>http://cfly.javaeye.com/blog/151911</guid>
      </item>
      <item>
        <title>做了2年对日外包之后能做什么？</title>
        <author>cfly</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cfly.javaeye.com">cfly</a>&nbsp;
          链接：<a href="http://cfly.javaeye.com/blog/151660" style="color:red;">http://cfly.javaeye.com/blog/151660</a>&nbsp;
          发表时间: 2007年12月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          本人工作3年半主要作对日外包项目，目前准备离职。<br />先说一说自己对日本项目的感受。<br />1。分工细<br />	拿我自己来说，主要负责实装，就是根据设计文档来实现机能。用的东西都是他们自己的框架，自己的工具。这套东西感觉很方便<br /><br />2。个环节工作到位<br />	需求，这部分主要是营业部的事情，营业部的人和客户沟通，给客户题方案，帮助客户确定需求。<br />	设计，这部分分为概要设计和详细设计。我主要接触的是详细设计，感觉就是细致，非常细致......<br />	codeing，这部分有自己发挥的余地，但是很有限，因为只能在规定好的地方写东西，通常是框架下面具体实现类的个别方法中，只要实现功能就可以，至于实现的过程不是很重要，有些新手可能会写出很烂的source，但是能通过测试就可以，如果产生了效率问题会有性能改善的需求提出来，不过一般不是瓶颈问题不大。<br />	test，这部分要求是很高的，测试文档的case和详细设计的case差不多，也就是说详细设计中提到的东西测试都要跑遍，而且大部分情况要截图，最后要随其他文档一同交付的。这是单体测试，交上去之后会做结合测试。<br />	review，检查source质量，比如明显的错误用法，变量的命名是否符合规约。<br />	纳品，把作好的东西交上去。<br />	保守，对应上线之后出现的问题。<br /><br />3。规矩<br />	各种规约是很多的，不同的项目又不同的规约，codeing之前看规约就很长时间，虽然很烦但是觉得是利大于弊的。<br /><br />4。生产力<br />	他们有自己的框架，而且很灵活，会根据项目来定制独特的框架，比如作j2ee的东西把struts加进来作为表现层，虽说struts是mvc的，但是我感觉只是用来作表现曾，controller是工具生成的，model的action也被extends了，而且业务在这里分的更加详细进入框架的其他部分，jsp端的tag也是被他们改过的，感觉他们的研发投入很大。我见过有的项目表现层用的Flex（前Macromedia，现Adobe的东西），有的项目是.net的，换一套VM模版就生成C＃的source，总之很灵活，很方便，很多细节都不用考虑。这样生产力提高很多，成本也降了下来，应届生培训很短时间就能出东西了。ps:可能干几年出来人就废了，也许这也是留住人的一种方法。见仁见智，如鱼饮水...<br /><br />5。和其他行业联系密切<br />	我做过一个农业的项目，畜牧业的，养猪养牛的老系统升级，记录成长状态，出生成长发情交配产子体重生病记录等等各种数据，做统计出报表，计算每只猪每顿应该吃什么吃多少，什么时间因该注射什么疫苗。旧系统的source中的注释时间是上个世纪的。日不还有贩卖系统等等。<br /><br />6。日本人的人品。<br />	不管是那儿的人都有好任何不好的人，在日本工作期间感觉中国人自己人欺负自己要多一些，也许是我的错觉，不多说了。<br /><br />准备找新工作，对国内项目了解不多，都是听说的，这几天接到几个面试，都是上来先做题，然后侃，基础，做过的东西，db，熟悉的东西了解的东西，struts，spring，j2ee，设计模式。<br />对项目中用过得东西我还是有些把握的，比如javamail，jta，以及看他们的框架中用到的几种设计模式。有些东西只是学习过但是没有在项目中接触过。<br />我去面试的几家公司好像都要求从需求到设计到codeing到测试都要做。<br />是不是我做了几年对日项目出来就废了？或者我应该继续做对日项目？还是有其他出路？<br />希望各位指点迷津。在此先表示感谢了。
          <br/>
          <span style="color:red;">
            <a href="http://cfly.javaeye.com/blog/151660#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 29 Dec 2007 07:39:38 +0800</pubDate>
        <link>http://cfly.javaeye.com/blog/151660</link>
        <guid>http://cfly.javaeye.com/blog/151660</guid>
      </item>
  </channel>
</rss>