响应首部:
响应首部可能包括:
Location(重定向)
Location响应报头域用于重定向接受者到一个新的位置。例如:客户端所请求的页面已不存在原先的位置,为了让客户端重定向到这个页面新的位置,服务器端可以发回Location响应报头后使用重定向语句,让客户端去访问新的域名所对应的服务器上的资源。当我们在JSP中使用重定向语句的时候,服务器端向客户端发回的响应报头中,就会有Location响应报头域。
Server响应头
Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。它和User-Agent请求报头域是相对应的,前者发送服务器端软件的信息,后者发送客户端软件(浏览器)和操作系统的信息。下面是Server响应报头域的一个例子:Server: Apache-Coyote/1.1
实体头
请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括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定义。
Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型,如:"application/octet-stream"。
Last-modified:实体头指定服务器上保存内容的最后修订时间。
Accept-Ranges:这个字段说明Web服务器是否支持Range(是否支持断点续传功能),如果支持,则返回Accept-Ranges: bytes,如果不支持,则返回Accept-Ranges: none。
Content-Encoding:文档的编码(Encode)方法。它的值指示了已经被应用到实体正文的附加内容编码,因而要获得Content- Type报头域中所引用的媒体类型,必须采用相应的解码机制。Content-Encoding主要用语记录文档的压缩方法,下面是它的一个例子: Content-Encoding: gzip。如果一个实体正文采用了编码方式存储,在使用之前就必须进行解码。
Expires: 给出响应过期的日期和时间。通常,代理服务器或浏览器会缓存一些页面。当用户再次访问这些页面时,直接从缓存中加载并显示给用户,这样缩短了响应的时间,减少服务器的负载。为了让代理服务器或浏览器在一段时间后更新页面,我们可以使用Expires实体报头域指定页面过期的时间。当用户又一次访问页面时,如果Expires报头域给出的日期和时间比Date普通报头域给出的日期和时间要早(或相同),那么代理服务器或浏览器就不会再使用缓存的页面而是从服务器上请求更新的页面。不过要注意,即使页面过期了,也并不意味着服务器上的原始资源在此时间之前或之后发生了改变。
Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计。除了刷新当前文档之外,你还可以通过setHeader("Refresh", "5; URL=http://host/path")让浏览器读取指定的页面。 注意这种功能通常是通过设置HTML页面HEAD区的<META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://host/path">实现。
Allow:服务器支持哪些请求方法(如GET、POST等)。
Content-Disposition:打开一个网页时,浏览器会首先看是否有Content-Disposition: attachment这一项,当是“Content-Disposition: attachment”时是下载,“Content-Disposition:inline”是在线打开文件
下面是一个响应消息
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain
HTTP方法:
GET
GET方法请求服务器检索由该HTTP请求中的URL指定的资源并在回复中发给客户端。这是最基本的请求类型,也是占大多数的HTTP数据流。当你输入一个常规URL或点击一个文档中的链接,通常就是提示Web浏览器发送GET请求。
对于GET的处理取决于若干因素。如果URL正确并且服务器能够找到资源,会发送合适的响应给客户端。返回资源需取决于请求对象的特性。如果无法妥当处理请求,则会产生一个错误信息。在使用缓存的情况下,代理服务器甚至客户端自己就可以满足请求。对于某种特定报头如 If-Modified-Since 或 If-Match, GET请求的含义可能随之而改变,要求服务器仅在满足特定条件时发送资源。这类请求称为条件GET。类似的,客户端可以使用Range头来要求服务器仅发送部分资源。这类请求称为部分GET。
HEAD
HEAD方法同GET,但告知服务器不要发送消息实体。客户端通常使用这种方法来检查资源是否存在,状态,或文件大小,再决定是否需要服务器发送整个文件。HEAD请求的处理与GET相同,除了只返回头部而不返回实际的资源之外。
POST
POST方法允许客户端发送任意数据的实体到服务器以进行处理。它通常同于客户端提交例如交互式HTML信息给服务器程序,之后服务器作出行动并发回响应。这种方法用于各种在线进程。请求中的URL指定服务器上接受数据的程序名。
PUT
这种方法请求服务器将请求中的实体保存在请求中的URL里。PUT中,URI指明请求中的实体,因而PUT能够让文件复制到服务器,在GET请求中文件能够被复制到客户端。与之相反,POST中URI标识的程序处理请求中的实体,因此通常应用于交互式程序。PUT用法很多,如上传内容到网站,这种情况下必须加以认证。但是,在站点上存储文件通常使用其他方式,如FTP。
TRACE
客户端通过这种方法接收发至服务器的请求,用于诊断目的
状态码:
信息性:1xx:
100 Continue:客户端应该继续它的请求;101 Switching Protocols:服务器理解并愿意答应客户端的请求;
成功 2xx:
这类状态码表示客户端的请求成功被接收、理解和接受了;
200 OK:请求已经成功。
201 Created:请求全部成功,且创建了新新资源。
202 Accepted:请求已经接受处理,但是处理还没有完成。
203 Non-Authoriative Infomation:实体头部中返回的元信息不实在原始服务器有效地确定的集合,而是从本地或第三方 拷贝收集的。
204 No Content:服务器已经完成请求;
205 Reset Content:服务器已经完成请求且用户代理应该复位引起请求发送的文档视图。
206 Partial Content: 服务器资源已经完成局部资源的GET请求;
重定向 3xx:
这类状态码指示,需要用户代理采取更进一步的行为来完成请求。
300 Multiple Choices:所请求的资源符合表达式集合中的任何一个,每个都有它自己的特殊位置。
301 Moved Permannently:所请求的资源已经指定到一个新的永久URI,且将来任何对该资源的引用都应该使用所返回的U RI之一。
302 Found:所请求的资源临时存在不同的URI。
303 See Other:请求的响应可以再不同的URI中发现,且应该使用GET方法到该资源来获取它。
304 Not Modified:如果客户端执行条件GET请求,且允许访问,但文档没有变化,服务器用该响应码响应。
305 USE Proxy:所请求的资源必须通过Location域中给出的代理来访问。
306 : 保留;
客户端错误 4xx:
4xx类的状态码用于看起来客户端有错误的情况下。
400 Bad Request:服务器不能理解该请求,由于畸形的语法。客户端不应该重复没有经修改的请求。
401 unauthorized:请求需呀用户认证。
402 Payment Required:保留;
403 Forbidden:服务器理解请求,但拒绝完成它。
404 Not Found: 服务器不能匹配Request-URI的任何东西;
405 Method not Allowed:Request-Line 中指定的方法不允许用到由Request-URI标识的资源。
406 Not Acceptable:请求所标识的资源的内容特性不被请求中所发送的接受头部所接受,所以不能生成响应;
407:同401类似
408 Request Timeout:在服务器准备等待的时间内,客户端没有产生任何请求。
409 Conflict:请求没有完成,因为对资源现有状态的冲突;
410 Gone:所请求的资源不再服务器上有效,且不知道转发地址。
411 Length required:服务器拒绝接受没有定义的请求;
412 Precondition Failed:在一个或多个请求头部域给出的前提在服务器上测试评估失败。
413 :服务器拒绝处理请求,因为情趣实体长于服务器愿意或能够处理的长度;
414 :服务器拒绝服务请求,因为Request-URI长于服务器愿意解析的长度;
415 : 服务器拒绝服务请求,因为请求的实体是请求方法所请求的资源所不支持的格式;
416 : 服务器应该返回该状态码的响应,如果请求包括Range请求头部,且该域中的范围指定没哟覆盖任何选择西苑的当前 长度;
服务器错误 5xx:
由数字5打头的响应状态码表示服务器已经明显处于错误的状况下或没有能力执行请求;
500 Internal Server Error:服务器发生非预期情况,阻止它完成请求。
501 not implemented:服务器不提供完成请所需要的功能;
502 Bad Gateway:当作为网关或代理时,服务器从它靠近的上游服务器收到试图完成请求的无效响应。
503 Service unavailable:服务器当前不能处理请求,因为临时性的负载过重或服务器维护中;
504 Gateway Timeout:当作为网关或代理时,服务器试图完成请求是没有从URI指定我上游服务器或一些其它所需来访问 的辅助服务器收到定时响应;
505 HTTP Version Not Supported:服务器不支持,或拒绝支持,请求消息中使用的HTTP协议版本。