一 HTTP请求报文(http://en.wikipedia.org/wiki/List_of_HTTP_header_fields)
请求报文由三部分组成:请求行,请求头和请求体。
请求行:请求方法(如POST),请求URL地址(和请求头Host属性组成完整URL),HTTP协议及版本。
请求头:包含若干个属性,格式为“属性名:属性值”。
请求体:以param1=value1¶m2=value2的键值对形式编码成的格式化串,承载多个请求参数的数据。除了请求体外,请求URL也可以通过“?param1=value1¶m2=value2”的方式传递数据。
常见的HTTP请求头属性:
Accept:客户端接收的响应类型,可以为一个或多个MIME类型的值。
Cookie:客户端Cookie,可以将jsessionid放在Cookie中。
Referer:表示请求是从哪个URL过来的。
Cache-Control:指定在整个请求响应链中必须遵守的缓存机制。
Content-Length:请求体得字节数。
服务器端通过HttpServletRequest读取请求头。其中一些典型的请求头属性,例如Cooke,Locale和ContentLength等有直接读取的API。对于HttpSession,是读取请求头Cookie属性中jsessionid的值,然后在服务器端一个会话Map中根据jsessionid获取HttpSession对象,实现会话管理。
二 HTTP响应报文
HTTP响应由三部分组成:响应行,响应头和响应体。
响应行:Http协议及版本,响应状态吗及描述。
响应头:同样由多个属性组成。
响应体:返回的资源。
响应状态吗:(http://en.wikipedia.org/wiki/List_of_HTTP_status_codes )
1XX:收到请求,正在处理等。
2XX:处理成功,处理完成等。如200 OK处理成功。
3XX:重定向等。如303 See Other,重定向到Location中;303 Not Modified。
4XX:发生错误,责任在客户端。如404 Not Found。
5XX:发生错误,责任在服务端。如500 Internal Server Error。
常见的HTTP响应头属性:
Cache-Control:设置缓存策略,在缓存时间内再次访问资源应该直接从客户端缓存中返回内容,具体实现靠客户端实现。
ETag:服务器资源的具体版本,只在统一URL下,比较ETag才有意义。
Last-Modified:所请求实体的最后修改日期。
Location:一个URL,让客户端重定向。
Set-Cookie:服务器设置客户端的Cookie。
服务器通过HttpServletResponse的API写响应头的属性。如Cookie,Location等提供了直接操作的API。