响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和 Request-URI 进一步的信息。响应头域包含 Age 、 Location 、 Proxy-Authenticate 、 Public 、 Retry- After 、 Server 、 Vary 、 Warning 、 WWW-Authenticate 。对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。
Location 响应头用于重定向接收者到一个新 URI 地址。
Server 响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。
指在头域结束空行 后的所有内容,请求消息和响应消息都可以包含实体信息,实体可以是一个经过编码的字节流,它的编码方式由实体头域中的 Content-Encoding 或 Content-Type 定 义,它的长度由 Content-Length 或 Content-Range 定义。
实体头域描述实体的信息,实体头包括 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-Type 实体头用于向接收方指示实体的介质类型,指定 HEAD 方法送到接收方的实体介质类型,或 GET 方法发送的请求介质类型 Content-Range 实体头
指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:
Content-Range:bytes-unit< 空格 >first-byte-pos-last-byte-pos/entity-legth
例如,传送头 500 个字节次字段的形式: Content-Range:bytes0- 499/1234 如果一个 http 消息包含此节(例如,对范围请求的响应或对一系列范围的重叠请求), Content-Range 表示传送的范围,
表示实际传送的字节数。 只有当浏览器使用持久 HTTP 连接时才需要这个数据。如果你想要利用持久连接的优势,可以把输出文档写入 ByteArrayOutputStram ,完成后查看其大小,然后把该值放入 Content-Length 头,最后通过 byteArrayStream.writeTo(response.getOutputStream() 发送内容。
服务器支持哪些请求方法(如 GET 、 POST 等)。
文档的编码( Encode )方法。只有在解码之后才可以得到 Content-Type 头指定的内容类型。利用 gzip 压缩文档能够显着地减少 HTML 文档的 下载时间。 Java 的 GZIPOutputStream 可以很方便地进行 gzip 压缩,但只有 Unix 上的 Netscape 和 Windows 上的 IE 4 、 IE 5 才支持它。因此, Servlet 应该通过查看 Accept-Encoding 头(即 request.getHeader("Accept- Encoding") )检查浏览器是否支持 gzip ,为支持 gzip 的浏览器返回经 gzip 压缩的 HTML 页面,为其他浏览器返回普通页面。
一个条件 GET ,只有改动时间迟于指定时间的文档才会返回,否则返回一个 304 ( Not Modified )状态。应该在什么时候认为文档已经过期,从而不再缓存它。
HTTP/1.0 200 OK
Date:Mon,31Dec200104:25:57GMT
Server:Apache/1.3.14(Unix)
Content-type:text/html
Last-modified:Tue,17Apr200106:46:28GMT
Content-length:4359
Content-range:bytes554554-40279979/40279980
响应消息体…
上例第一行表示 HTTP 服务端响应一个 GET 方法。绿色的部分表示响应头域的信息,兰色的部分表示通用头部分,红色的部分表示实体头域的信息。