请求行 GET /form.html HTTP/1.1 (CRLF) 请求方法 要请求的资源 HTTP协议版本 回车换行符 消息报头 单行空行 请求正文 服务器响应-状态行 HTTP/1.1 200 OK (CRLF) HTTP版本 服务器发回的响应代码 状态行代码的文本描述 表示回车换行 状态代码由三位数组成,后面的两位数字没有具体的分类 1XX 指示信息-表示请求已接收,继续处理 2XX 成功-表示请求已被成功接收,理解,接收 3XX 重定向-要完成请求必须进行更进一步的操作 4XX 客户端错误-请求有语法错误或请求无法实现 5XX 服务器错误-服务器未能实现合法的请求 HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成,请求消息和响应消息都是由 开始行,消息报头(可选的),空行(只有CRLF的行),消息正文(可选的)组成,对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行 HTTP消息报头包括普通报头,请求报头,响应报头,实体报头 每一个报头域都是由名字+":"+空格+值组成,消息报头域的名字与大小写无关的 普通报头域 Cache-Control 普通报头域用于指定缓存指令 Cache-Control普通报头实在HTTP1.1中新加的,HTTP1.0中使用的类似报头名为Pragma 请求时的缓存指令包括no-cache no-store max-age max-state min-fresh only-if-cached 响应时的缓存指令包括public private no-cache no-store no-transform must-revalidate proxy-revalidate max-age s-maxage 为了指示IE浏览器(客户端)不要缓存页面,服务器端的jsp程序可以编写下面代码 response.setHeader("Cache-Control","no-cache") Date Date普通报头域表示消息产生的日期和时间,可以用于HTTP响应中,也可以用于HTTP请求中,作为服务器端,应该总是在所有的响应中包含Date报头域,作为客户端只有在发送消息中包含了消息正文的时候,才应该发送Date报头域,例如,在POST请求的时候 Connection Connection普通报头域允许发送者指定连接的选项,例如指定连接时连续的,或者指定"close"选项,通知服务器,在响应完成后,关闭连接。 Pragma Pragma普通报头域被用于包含特定实现的指令,这些指令可能会应用到请求/响应链中的任何一个接收者,最常用的是Pragma:no-cache相同,有时候,我们不知道客户端浏览器是否支持HTTP1.1,可以同时使用Prama和Cache-Control报头域,来指示客户端不要缓存响应消息 eg;response.setHeader("Pragma":"no-cache"); 请求报头域 Accept Accept请求报头域用于指定客户端接收哪些类型的信息,例如Accept:image/gif,表明客户端希望接受GIF图像格式的资源,Accept:text/html,表明客户端希望接受html文本。 Accept-Charset Accept-Charset请求报头域用于指定客户端接受的字符集,例如,Accept-Charset:iso-8859-1,gb2312,如果在请求消息中没有设置这个域,缺省是任何字符都可以接受。 Accept-Encoding Accept-Encoding请求报头域或类似于Accept,但是它是用于指定可接受的内容编码,如何Accept-Encoding:gzip,deflate,如果请求消息中没有设置这个域,服务器假定客户端对各种内容编码都可以接受。 Accept-Language Accept-Language请求报头域类似于Accept,但是它用于指定一种自然语言, 例如,Accept-Language:zh-cn, 如果请求消息中没有设置这个域,服务器假定客户端对各种语言都可以接受。 Authorization Authorization请求报头域主要用于证明客户端有权查看某个资源,当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发送一个包含Authorization请求报头域的请求,要求服务器对其进行验证。 Host Host请求报头域主要用于指定请求资源的Internet主机和端口号,它主要是从HTTP URL中提取出来的,在发送HTTP请求的时候,这个报头域是必须的。 端口号缺省值80 User-Agent 用于发送客户端的某些信息给浏览器 响应报头域 Location Location响应报头域用于重定向接受者到一个新的位置 eg:如客户的请求页面已经不再原来的位置,为了让客户端重定向到这个页面新的位置,服务器可以发回Loaction响应报头域。当我们在JSP中使用重定向语句的时候,服务器端向客户端发回的响应域中,就会有Location响应报头域,Location: http://www. Server Server响应报头域包含了服务器用来处理请求的软件信息。可以用来发送服务端软件的信息。 Server: Apache-Coyote/1.1 WWW-Authenticate WWW-Authenticate响应报头域必须被包含在401(未授权的)响应消息中,与Authorization请求报头域是相关的。 WWW-Authenticate: Basic realm="Basic Auth Test!" 从这个响应报头域,可以知道服务器对我们所请求的资源采用的是基本验证机制。 一个实体报头域和实体正文组成,发送时,并不是说实体报头域和实体正文要在一起发送。 实体报头 Content-Encoding 主要用于记录文档的压缩方法 eg:Content-Encoding: gzip 如果一个实体正文采用了编码方式存储,在使用之前就必须进行解码。 Content-Language Content-Language实体报头域描述了资源所用的自然语言,如果这个实体内容仅仅打算提供给丹麦的阅读者 eg:Content-Language: da Content-Length Content-Length实体报头域用于证明实体正文的长度,以字节方式存储的十进制数字来表示,也就是一个数字字符占用一个字节,用其对应的ASCII码存储传输。 要注意的是,这个长度仅仅是表示实体正文的长度,没有包括实体报头的长度。 Content-Type Content-Type实体报头域用于指明发送给接收者的实体正文的媒体类型 Content-Type:text/html;charset=ISO-8859-1 Last-Modified Last-Modified实体报头域用于指示资源最后的修改日期以及时间 Expires Expires实体报头域给出响应过期的日期和时间,通常代理服务器或浏览器会缓存一些页面,当用户再次访问这些页面时,直接从缓存中加载并显示给用户,这样缩短了响应时间,减少服务器的负载。 Expires实体报头域使用的日期和时间必须是RFC 1123中的日期格式 eg: Expires:Thu, 15 Sep 2005 16:00:00 GMT HTTP1.1的客户端和缓存必须将其它非法的日期格式(也包括0)看做已经过期,例如,为了让浏览器不要缓存页面 eg: response.setDateHeader("Expires",0); |
|
来自: 擎天猪mpnlajkd > 《Servlet》