Http协议响应的解析

        在接受到一个请求后,服务器会返回一个HTTP响应。HTTP响应由三部分构成,即状态行,相应报头和响应正文。

        1、状态行

        状态行由HTTP版本(HTTP-Version)、状态码(Status-Code)以及解释状态码的简单短语(Reason-phrase)三部分构成,请格式如下:

        HTTP-Version Status-Code Reason-phrase CRLF

        状态码由三位数字组成,共有5大类33种,其中第一个数字指定了响应类型,取值为1~5,后面两位没有具体的规定。

  • 1xx:指示信息,如请求收到了或正在处理。
  • 2xx:成功。
  • 3xx:重定向。
  • 4xx:客户端错误,如请求中含有错误的语法或不能正常完成。
  • 5xx:服务器端错误,如服务器失效而无法完成请求。

        例如:

  • 200:OK  成功
  • 304:Not Modified  未修改
  • 400:Bad Request  错误请求
  • 404:Not Found  未找到

        典型的响应状态码解释如下:

  • 200:表示请求成功,成功返回了请求的资源。
  • 302/307:表示临时重定向,此时请求的文档已经临时移动到其他位置,该文档新的URL将在Location响应报头中给出。
  • 401:表示浏览器访问的是一个受到密码保护的页面。
  • 403:表示服务器收到请求,但拒绝提供服务。
  • 404:表示找不到资源,即服务器上不存在浏览器请求的资源。
  • 500:表示内部服务器错误,即服务器端的CGI、ASP、JSP等程序发生了错误。
  • 503:表示服务器暂时性超载,不能处理当前的请求。

        状态行举例:

        HTTP 1.0 200 OK

        这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。代码''200 OK''表示请求完成。

        2、响应报头

        有了响应报头服务器就可以传递不能放在状态行中的附加响应信息,以及服务器的信息和对Request-URI所标识的资源进行下一步访问信息。

        常见的响应报头如下:

  • Allow:指出服务器所支持的请求方法,如GET、POST等方法。
  • Content-Encoding:指定文档的编码方法。
  • Content-Length:指定响应中数据的字节长度。
  • Content-Type:指定回送数据的MIME类型。
  • Date:指定发送HTTP消息的日期。
  • Last-Modified:指定返回数据的最后修改时间。
  • Location:重定向请求到一个新的URI地址。
  • Refresh:指定浏览器定时刷新时间。
  • Expires:指定浏览器缓存数据的时间。
  • Server:指定服务器名称,包含了处理请求的服务器使用的软件产品信息,与User-Agent请求报头相对应。

        3、响应正文

        响应正文是指服务器所返回的资源内容,如HTML页面。响应报头和响应正文之间必须使用空格分隔。

        一个典型的HTTP响应示例如下:

       

    HTTP/1.1 200 OK                          /*状态行*/
    Connection:close                        /*连接状态*/
    Date:Wed, 19 Nov 2017 02:20:45 GMT     /*日期*/
    Server:Apache/2.0.54(Unix)              /*服务器*/
    Content-Length:397                      /*指定数据包含的字节长度*/
    Content-Type:text/html                  /*指定返回数据的MIME类型*/
    /*空行*/
    <html>
        <body>
        /*数据*/
        </body>
    </html>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章