分享

HTTP小结

 擎天猪mpnlajkd 2017-03-18
请求行
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);

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多