HTTP协议详解(二)

今天终于有时间把前面剩下的总结一下了:吐舌头    欢迎大家加关注,一起学习一起进步,互帮互助!

(三)消息报头

         消息报头由四部分组成:普通报头、请求报头、响应报头、实体报头。

        (1)、普通报头的作用:可以用于请求,也可用于响应,不用于被传输的实体,只用于传输消息;对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。

          普通报头必有的四个参数:Cache-Control、Data、Pragma、Connection。

         Cache-Control用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制),HTTP1.0使用的类似的报头域为Pragma。

并且Cache-Control分为两种:请求时使用的缓存指令有

           no-cache:请求或响应消息不能缓存。

           no-store:用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。

           max-age:客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

           max-stale:客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

           min-fresh:客户机可以接收响应时间小于当前时间加上指定时间的响应。

          only-if-cached:只接受被缓存的内容。

   响应时使用的缓存指令有:

         public:响应可被任何缓存区缓存。

        private:是对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。

        no-cache:请求或响应消息不能缓存。

        no-store:用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。

        no-transform、must-revalidate、proxy-revalidate、

        max-age:客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

Data表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。

Pragma用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。

Connection普通报头域允许发送指定连接的选项。
例如指定连接是连续,或者指定“close”选项,通知服务器,在响应完成后,关闭连接。


(2)、请求报头允许客户端传递关于自身的信息和希望的响应形式。请求报头通知服务器有关客户端的请求的信息。
常用的请求报头:Host(发送请求时,该报头域是必需的)
Host请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。

请求报头必有的一些指令:

      Host:指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。

      Referer:用来记录你当前网页是从哪里跳转来的(来源),允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等;它也允许废除的或错误的连接由于维护的目的被追踪;如果请求的uri没有自己的uri地址,Referer不能被发送;如果指定的是部分uri地址,则此地址应该是一个相对地址。

      Accept:请求报头域用于指定客户端接受哪些类型的信息。

      Accept-Charset:用于指定客户端接受的字符集。

      Accept-Encoding:类似于Accept,但是它是用于指定可接受的内容编码。它的压缩方式有:gzip、deflate。

     Accept-Language:类似于Accept,但是它是用于指定一种自然语言。

     Authorization:主要用于证明客户端有权查看某个资源。当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发送一个包含Authorization请求报头域的请求,要求服务器对其进行验证。


(3)、响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。

响应报头必有的一些指令:

         Location:用于重定向接受者到一个新的位置。

         Server:包含了服务器用来处理请求的软件信息。与User-Agent请求报头域是相对应的。

         WWW-Authenticate:必须被包含在401(未授权的)响应消息中,客户端收到401响应消息时候,并发送Authorization报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。


(4)、实体报文( 请求和响应消息都可以传送一个实体。)一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。

       实体报头定义了关于实体正文(eg:有无实体正文)和请求所标识的资源的元信息。

实体报文必有的一些指令

        Content-Encoding:被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。(用于记录文档的压缩方法)

        Content-Language:描述了资源所用的自然语言。没有设置该域则认为实体内容将提供给所有的语言阅读
者。

         Content-Length:用于指明实体正文的长度,以字节方式存储的十进制数字来表示。

        Content-Type:用于指明发送给接收者的实体正文的媒体类型。

        Last-Modified:用于指示资源的最后修改日期和时间。

        Expires:给出响应过期的日期和时间。

        Content-Range:用于指定整个实体中的一部分的插入位置,它也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。




PS:

      GET和POST请求有何区别?

            1、传输的数据大小不一样:  GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.。(不同浏览器对url长度限制不一样)

             2、安全性质不一样:  GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码。而POST方式提交数据时,用户名和密码都写在实体中。

             3、GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456.  POST方法是把提交的数据放在HTTP包的Body(实体)中.



参考的书籍有:   HTTP权威指南、高性能网站建设指南、还有看了一些其它资料而总结出来的。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值