注:本文中绝大部分内容整理自百度百科,如有错误欢迎指正。
HTTP消息头
定义:在HTTP的请求和响应消息中,协议头部分的组件。
HTTP消息头是在客户端请求(Request)或服务器响应(Response)时传递的,位于请求或响应的第一行,HTTP消息体(请求或响应的内容)在其后传输。
一个HTTP请求由请求行(request line)、请求头(header)、空行和请求数据4个部分组成;HTTP响应也由三个部分组成,分别是:状态行、响应头、空行、响应正文。
常用的HTTP请求头
- Accept:浏览器可接受的MIME类型。
- Accept-Charset:浏览器可接受的字符集。
- Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。
- Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
- Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中,为用户名和密码的Base64编码(用户名和密码之间用“:”隔开)。
- Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。
- Content-Length:表示请求消息正文的长度。
- Cookie:这是最重要的请求头信息之一
- From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。
- Host:初始URL中的主机和端口。
- If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。
- Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。
- Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
- User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。
- UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。
- X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。它不是RFC中定义的标准请求头信息。
常用的HTTP响应头/HTTP实体头
- setContentType:设置Content-Type头。
- setContentLength:设置Content-Length头。
- addCookie:设置一个Cookie。
- Allow 服务器支持哪些请求方法(如GET、POST等)。
- Content-Encoding:文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。
- Content-Length:表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。
- Content-Type:表示后面的文档属于什么MIME类型。
- Date:当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。
- Expires:应该在什么时候认为文档已经过期,从而不再缓存它。
- Last-Modified:文档的最后改动时间。
- Location:表示客户应当到哪里去提取文档。
- Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计。
- Server:服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。
- Set-Cookie:设置和页面关联的Cookie。
- WWW-Authenticate:客户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态行的应答中这个头是必需的。