HTTP协议

  HTTP协议是基于“请求与响应”模式的无状态、应用层的协议,常基于TCP。

  HTTP请求分为三个部分:请求行、消息报头、请求正文。在接收和接收请求消息之后,服务器返回一个HTTP响应消息,包括三个部分:状态行、消息报头、响应正文。下面分别说这三个部分。

    请求行的格式是“请求方式”“资源路径”“HTTP版本号”,一个例子:GET /test.html HTTP/1.1。请求的方式可以是“GET”,“POST”,“PUT”,“DELETE”,“OPTIONS”,“TRACE”,“HEAD”。(现在大部分框架是基于“GET”和“POST”,不过现在也有框架是根据HTTP协议的初衷来做的,在哪里看到的忘记了...)。

    状态行的格式是“HTTP版本号”“状态号”“原因描述”,一个例子:HTTP/1.1 200 OK。

    普通报头中,“Cache-Control”用来指定缓存指令(各个消息之间独立)。请求的缓存指令包括:no-cache、no-store、max-age、max-stale、min-fresh、only-if-cache。响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage。“Date”域用来表示消息产生的时间。“Connection”可以指定连接的类型。至于具体的值是什么意思,百度一下就可以了(google被墙了)。

    请求报头中,“Accept”指定客户端接收那些类型的数据,例如Accept:image/gif表示结构gif格式的图片资源。“Accetp-Chareset”用于指定客户端的字符集。“Accept-Encoding”指定了可接受的内容编码。“Accpte-Language”指定了一种自然语言。“Authorization”用来证明有权限访问某个资源。“Host”指定了ip和端口。“User-Agent”表明可以将浏览器、操作系统信息告诉服务器。

    响应报头中,“Location”用于重定向接受者到一个新的位置(常用在更换域名的时候)。“Server”提供了服务器的一些信息。

    实体报头定义了实体正文和请求所标识的资源的元信息。其中“Content-Encoding”指示了已经被应用到实体正文的附加内容的编码,比如压缩过的可能要用“gzip”。“Content-language”指出所用的自然语言。“Content-Length”指定正文的长度。“Content-Type”指定正文的媒体形式,比如“Content-Type:text/html;charset=GB2312”。“Expires”给出响应过期的时间和日期(可以用这个来设置是否需要缓存)。可以用telnet来查看上面介绍的这些内容。

-----------------------

个人理解,欢迎拍砖。

posted @ 2011-07-25 22:13  GG大婶  阅读(273)  评论(0编辑  收藏  举报