码迷,mamicode.com
首页 > Web开发 > 详细

浅谈Http协议

时间:2016-04-22 19:36:39      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

一、Http请求报文:
    请求报文介绍一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求体4个部分组成,图-1给出了请求报文的一般格式。

                                          技术分享

             图-1: http请求报文的一般格式

1、请求行
   请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。它的一般格式如 
 下:
       一般格式:Method Request-URI HTTP-Version CRLF  
       具体请求的格式:POST http://192.168.2.217:8080/index.jsp HTTP/1.1

   (1)Method
        Method表示请求方法,请求方法(所有方法全为大写)有多种,各个方法的解释如下:
           GET     请求获取Request-URI所标识的资源
           POST    在Request-URI所标识的资源后附加新的数据
           HEAD    请求获取由Request-URI所标识的资源的响应消息报头
           PUT     请求服务器存储一个资源,并用Request-URI作为其标识
           DELETE  请求服务器删除Request-URI所标识的资源
           TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断
           CONNECT 保留将来使用
           OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

    (2)Request-URI是一个统一资源标识符
       这个字段为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。
   
   (3)HTTP-Version
        这个字段表示请求的HTTP协议版本,目前常用的是HTTP的1.1版本。
     
    特别注意:CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

2、请求头
   请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。
        Accept:image/gif.image/jpeg.*/*
        Accept-Language:zh-cn
        Connection:Keep-Alive
        Host:localhost
        User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
        Accept-Encoding:gzip,deflate.
    
   (1)Accept属性
        这表明客户端浏览器支持的MIME数据类型,比如案例中客户端支持jif图片和jpg图片,且优先顺序 
        为:jif--->jpg
  
    (2)
Accept-Language属性
       客户端支持的语言:
zh-cn表示中文简体
  
   (3)
Connection属性
        该属性表示客户端与服务连接类型。
Keep-Alive:表示持久连接(长
连接
   (4)
Host属性:域名
   (5)
User-Agent属性:客户端代理(在PC端一般是浏览器类型)
   (6)
Accept-Encoding属性
        表示浏览器有能力解码的编码类型;

        gzip是 GNU zip 的缩写,它是一个 GNU 自由软件的文件压缩程序,也经常用来表示 gzip 这种

            文件格式。

      deflate是同时使用了 LZ77 算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法。


3、空行
   最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

4、请求实体(Request Body:请求正文或请求实体
   请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

     具体应用:

                                                                    技术分享

 图-2:请求报文

二、HTTP响应报文
    HTTP 响应报文由状态行、响应头部、空行 和 响应包体 4 个部分组成,如图-3所示
                                                                                                       技术分享

图-3: http响应报文的一般格式

下面对响应报文格式进行简单的分析:

   1、状态行
      状态行由3部分组成,分别为:协议版本,状态码,状态码描述,之间由空格分隔,一般格式如下:
      (1)协议版本
           协议版本指的是服务器端与客户端的HTTP通信协议,目前一般采用HTTP/1.1版本。
      (2)状态码
            ①五大类常用状态码: 

                1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;

              2xx:表示服务器已成功接收到请求并进行处理;

              3xx:表示服务器要求客户端重定向;

              4xx:表示客户端的请求有非法内容;

              5xx:表示服务器未能正常处理客户端的请求而出现意外错误;


            ②常用的一些具体的状态码:

100——客户必须继续发出请求
101——客户要求服务器根据请求转换HTTP协议版本

2**:操作成功收到,分析、接受
200——交易成功
201——提示知道新文件的URL
202——接受和处理、但处理未完成
203——返回信息不确定或不完整
204——请求收到,但返回信息为空
205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206——服务器已经完成了部分用户的GET请求

3**:完成此请求必须进一步处理
300——请求的资源可在多处得到
301——删除请求数据
302——在其他地址发现了请求数据
303——建议客户访问其他URL或访问方式
304——客户端已经执行了GET,但文件未变化
305——请求的资源必须从服务器指定的地址得到
306——前一版本HTTP中使用的代码,现行版本中不再使用
307——申明请求的资源临时性删除

4**:请求包含一个错误语法或不能完成
400——错误请求,如语法错误
401——未授权
HTTP 401.1 - 未授权:登录失败
HTTP 401.2 - 未授权:服务器配置问题导致登录失败
HTTP 401.3 - ACL 禁止访问资源
HTTP 401.4 - 未授权:授权被筛选器拒绝
HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败
402——保留有效ChargeTo头响应
403——禁止访问
HTTP 403.1 禁止访问:禁止可执行访问
HTTP 403.2 - 禁止访问:禁止读访问
HTTP 403.3 - 禁止访问:禁止写访问
HTTP 403.4 - 禁止访问:要求 SSL
HTTP 403.5 - 禁止访问:要求 SSL 128
HTTP 403.6 - 禁止访问:IP 地址被拒绝
HTTP 403.7 - 禁止访问:要求客户证书
HTTP 403.8 - 禁止访问:禁止站点访问
HTTP 403.9 - 禁止访问:连接的用户过多
HTTP 403.10 - 禁止访问:配置无效
HTTP 403.11 - 禁止访问:密码更改
HTTP 403.12 - 禁止访问:映射器拒绝访问
HTTP 403.13 - 禁止访问:客户证书已被吊销
HTTP 403.15 - 禁止访问:客户访问许可过多
HTTP 403.16 - 禁止访问:客户证书不可信或者无效
HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效
404——没有发现文件、查询或URl
405——用户在Request-Line字段定义的方法不允许
406——根据用户发送的Accept拖,请求资源不可访问
407——类似401,用户必须首先在代理服务器上得到授权
408——客户端没有在用户指定的饿时间内完成请求
409——对当前资源状态,请求不能完成
410——服务器上不再有此资源且无进一步的参考地址
411——服务器拒绝用户定义的Content-Length属性请求
412——一个或多个请求头字段在当前请求中错误
413——请求的资源大于服务器允许的大小
414——请求的资源URL长于服务器允许的长度
415——请求资源不支持请求项目格式
416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求长。

5**:服务器执行一个完全有效请求失败
HTTP 500 - 内部服务器错误
HTTP 500.100 - 内部服务器错误 - ASP 错误
HTTP 500-11 服务器关闭
HTTP 500-12 应用程序重新启动
HTTP 500-13 - 服务器太忙
HTTP 500-14 - 应用程序无效
HTTP 500-15 - 不允许请求 global.asa
Error 501 - 未实现

HTTP 502 - 网关错误

      (3)状态码描述
           上述的每个状态码后面都跟一个描述信息:就是对状态码的详细描述。

   2、响应头部(图中首部行)
         响应头(Response Header)响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时
      间、内容类型和长度等:
        
   3、空行
       最后一个响应头部之后是一个空行,发送回车符和换行符,通知服务器以下不再有响应头部。

   4、响应实体
       服务器返回给客户端的请求结果信息;


具体应用:(图-2请求的响应结果)
                                     技术分享                      

  图-4 响应报文

浅谈Http协议

标签:

原文地址:http://blog.csdn.net/u012810020/article/details/51211415

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!