消息报头

来源:互联网 发布:金林钣金展开软件2017 编辑:程序博客网 时间:2024/06/06 20:49

        HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。       
        HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。
        每一个报头域都是由名字+“:”+空格+值组成,消息报头域的名字是大小写无关的。

        1、普通报头
        在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息。
        eg:Cache-Control用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制),HTTP1.0使用的类似的报头域为Pragma。
        请求时的缓存指令包括:no-cache(用于指示请求或响应消息不能缓存)、no-store、max-age、max-stale、minfresh、only-if-cached;
        响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage.
        eg:为了指示IE浏览器(客户端)不要缓存页面,服务器端的JSP程序可以编写如下:response.sehHeader("Cache-Control","no-cache");//response.setHeader("Pragma","no-cache");作用相当于上述代码,通常两者//合用这句代码将在发送的响应消息中设置普通报头域:Cache-Control:no-cache
        Date普通报头域表示消息产生的日期和时间
        Connection普通报头域允许发送指定连接的选项。例如指定连接是连续,或者指定“close”选项,通知服务器,在响应完成后,关闭连接


       2、请求报头
       请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。
     常用的请求报头
      Accept
      Accept请求报头域用于指定客户端接受哪些类型的信息。eg:Accept:image/gif,表明客户端希望接受GIF图象格式的资源;Accept:text/html,表明客户端希望接受html 文本。
      Accept-Charset
      Accept-Charset请求报头域用于指定客户端接受的字符集。eg:Accept-Charset:iso-8859-1,gb2312.如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。
      Accept-Encoding
      Accept-Encoding请求报头域类似于Accept,但是它是用于指定可接受的内容编码。eg:Accept-Encoding:gzip.deflate.如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。
      Accept-Language
      Accept-Language请求报头域类似于Accept,但是它是用于指定一种自然语言。eg:Accept-Language:zh-cn.如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。
     Authorization
     Authorization请求报头域主要用于证明客户端有权查看某个资源。当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发送一个包含Authorization请求报头域的请求,要求服务器对其进行验证。
     Host(发送请求时,该报头域是必需的)
     Host请求报头域主要用于指定被请求资源的Internet 主机和端口号,它通常从HTTP URL中提取出来的,eg:我们在浏览器中输入:http://www.guet.edu.cn/index.html浏览器发送的请求消息中,就会包含Host请求报头域,如下:Host:www.guet.edu.cn此处使用缺省端口号80,若指定了端口号,则变成:Host:www.guet.edu.cn:指定端口号
     User-Agent
   我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的
浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent 这个请求报头
域中获取到这些信息。User-Agent 请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。不
过,这个报头域不是必需的,如果我们自己编写一个浏览器,不使用User-Agent 请求报头域,那么服务器端就
无法得知我们的信息了。
   请求报头举例:
      GET/form.html HTTP/1.1 (CRLF)
      Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.msexcel,application/vnd.mspowerpoint,application/msword,*/*(CRLF)
     Accept-Language:zh-cn (CRLF)
     Accept-Encoding:gzip,deflate (CRLF)
     If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)
     If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)
     User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0)(CRLF)
     Host:www.guet.edu.cn (CRLF)
     Connection:Keep-Alive (CRLF)
    (CRLF)


    3、响应报头
    响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。
   常用的响应报头
    Location
    Location响应报头域用于重定向接受者到一个新的位置。Location 响应报头域常用在更换域名的时候。
    Server
    Server响应报头域包含了服务器用来处理请求的软件信息。与User-Agent 请求报头域是相对应的。

    下面是Server响应报头域的一个例子:
    Server:Apache-Coyote/1.1
    WWW-Authenticate
    WWW-Authenticate 响应报头域必须被包含在401(未授权的)响应消息中,客户端收到401响应消息时候,并发送Authorization 报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。
    eg:WWW-Authenticate:Basic realm="Basic Auth Test!"//可以看出服务器对请求资源采用的是基本验证机制。


    4、实体报头
    请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文(eg:有无实体正文)和请求所标识的资源的元信息。
    常用的实体报头
    Content-Encoding
    Content-Encoding实体报头域被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。Content-Encoding这样用于记录文档的压缩方法,eg:Content-Encoding:gzip
    Content-Language
    Content-Language实体报头域描述了资源所用的自然语言。没有设置该域则认为实体内容将提供给所有的语言阅读者。eg:Content-Language:da
    Content-Length
    Content-Length 实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示。
    Content-Type
    Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。

    eg:Content-Type:text/html;charset=ISO-8859-1
    Content-Type:text/html;charset=GB2312
    Last-Modified
    Last-Modified 实体报头域用于指示资源的最后修改日期和时间。
    Expires
    Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面,我们可以使用Expires实体报头域指定页面过期的时间。eg:Expires:Thu,15Sep 2006 16:23:12 GMT
    HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。eg:为了让浏览器不要缓存页面,我们也可以利用Expires实体报头域,设置为0,jsp 中程序如下:response.setDateHeader("Expires","0");
 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 浪琴手表调了一下日期不走了怎么办 收件人号码写错快递柜已签收怎么办 医院名字写错了怎么办保险报销 电脑在使用中出现了英文字慕怎么办 下雨天了怎么办我好想你是什么歌 安卓手机不支持微信运动怎么办 装系统时无法跳过密匙怎么办 在msdn里下的系统没有网怎么办 w7电脑更新后系统没法激活怎么办 手机使用加速器后网速变卡怎么办 奥特曼ol分解了迪迦石像怎么办 左右棋牌游戏兑换总说系统护怎么办 四季海棠扦插以后黄叶卷叶怎么办 竹节海棠浇水多了叶子蔫了怎么办 社保停缴了里面的钱怎么办 王者荣耀英雄释放技能有延迟怎么办 买的桑拿木板颜色太深了怎么办 万一填写了奔跑吧诈骗信息该怎么办 深圳限行时段堵在路上怎么办 开车堵在路上到了限行时间怎么办 兄妹之间都不想照顾母亲我该怎么办 小孩扁体发炎睡觉呼吸声沉重怎么办 客所思pk3老驱动有杂音怎么办 手机打不开解压包密码怎么办 在香港专柜买东西柜员少给货怎么办 恶魔猎手第二神器任务没选择怎么办 电脑放久了开不了机怎么办 你在主持时说错话了怎么办 1、你在主持时说错话了怎么办? 领导让你替他参加重要会议怎么办 在备孕期老公照了片怎么办 和混混打架后被混混纠缠怎么办 开了一年的瑜伽馆想关掉会员怎么办 广东工厂宿舍里面床板有臭虫怎么办 胃癌手术后12天引流液多怎么办 八个月了胎儿头还在上面怎么办 喂奶一个月后奶头又裂开了怎么办 孩子吃奶吃的奶头裂开了怎么办 很想打坐久就是受不了腿疼怎么办 宝宝含乳一直纠正不过来怎么办 婴儿衘乳不正确只吸乳头怎么办