设为首页 加入收藏

TOP

HTTP协议详解(二)
2012-02-22 13:24:36 】 浏览:9957
Tags:HTTP 协议 详解
   //客户端请求成功
400 Bad Request             //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized             //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
403 Forbidden                 //服务器收到请求,但是拒绝提供服务
404 Not Found                //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error  //服务器发生不可预期的错误
503 Server Unavailable     //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
 

 

更多http响应码的说明,请参考 http://zh.wikipedia.org/zh/HTTP%E7%8A%B6%E6%80%81%E7%A0%81

 

四、HTTP协议详解之消息报头篇

     不管是请求消息还是响应消息,都由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头,空行(只有CRLF的行),消息正文组成。HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。每一个报头域都是由名字+":"+值 组成,消息报头域的名字是大小写无关的, 域值前可以有任意个空格(但通常会在前面添加一个空格),可以允许多个相同的消息包头。

1)普通报头
   
   普通报头中包含请求消息和响应消息都支持的头域,有Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。下面简对此作简单的介绍。

 

 

  • Cache-Control: 用于指定缓存指令。缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制),HTTP1.0使用的类似的报头域为Pragma。请求时, Cache-Control的取值包括:no-cache(用于指示请求或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached;  响应时, Cache-Control的取值包括 :public、private、no-cache、no-store、no-transform、must-reva lidate、proxy-reva lidate、max-age、s-maxage. 而各种Cache-Control的取值含义如下:

 

 

1
public      指示响应可被任何缓存区缓存。
2
Private        指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
3
no-cache       指示请求或响应消息不能缓存
4
no-store       用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
5
max-age        指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
6
min-fresh      指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
7
max-stale      指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

 

 

举例: 为了指示IE浏览器(客户端)不要缓存页面,服务器端的JSP页面可以编写如下:

 

"Cache-Control",
1
response.setHeader(
"no-cache"
);

 

 

 这句代码将在发送的响应消息中设置普通报头域:Cache-Control:no-cache

 

 

  • Date:表示消息产生的日期和时间, 例如 Date:Mon,31Dec200104:25:57GMT
  • Connection:  允许发送指定连接的选项。例如指定连接是连续,或者指定“close”选项,通知服务器,在响应完成后,关闭连接
  • Pragma:用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。

 

 

2) 请求报头
        请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。常用的请求报头有:

  • Accept:用于指定客户端接受哪些类型的响应信息。比如Accept:image/gif,表明客户端希望接受GIF图象格式的资源;而Accept:text/html,表明客户端希望接受html文本; Accept: image/gif,text/html,表明客户希望接受gif图像或html文本
  • Accept-Charset:用于指定客户端接受的字符集。比如Accept-Charset:ISO-8859-1,GB2312, 表示客户端希望返回的文本字符集是ISO-8859-1或GB2312。如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。
  •  Accept-Encoding:  用于指定可接受的内容编码。比如Accept-Encoding:gzip.deflate.如果请求消息中没有设置这个域,服务器假定客户端对各种内容编码都可以接受。
  •  Accept-Language:用于指定一种自然语言。比如Accept-Language:zh-CN, 表示接受中国汉语.如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。
  •  Authorization: 用于证明客户端有权查看某个资源。当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发送一个包含Authorization的请求报头域的请求,要求服务器对其进行验证。
  •  Host:主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP的URL中提取出来。比如我们浏览器中输入
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇TCP状态图 下一篇libevent C 事件通知接口函数库

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目