• 【HTTP】二、HTTP协议的报文结构


      HTTP有两类报文:请求报文和响应报文,由于 HTTP 是面向正文的(text-oriented),因此在报文中的每一个字段都是一些 ASCII码串,因而每个字段的长度都是不确定的。(HTTP2引入了二进制协议)

      这两种报文的结构基本上是相同的,都是由三部分组成:开始行(用于区分是请求报文还是响应报文)、首部行(一些键值对,用以说明一些信息)、实体主体(请求报文一般不用,响应报文也可能不用)。

    1、请求报文

      请求报文的最主要特点是:开始行(请求行)有三个内容组成,即方法、请求资源的URL、HTTP的版本号

      URL和版本号很好理解,主要看一下方法,方法其实就是命令,对所请求的对象进行一些操作,请求报文的类型就是由所采用的方法决定的。

      从HTTP/1.1开始,常用的方法有8种:

      以下是一个请求报文的例子:

    GET http://www.tsinghua.edu.cn/chn/yxsz/index.html HTTP/1.1
    Connection:close  (这是首部行的开始,说明使用非持久连接)
    User-Agent:Mozilla/5.0  (表明用户带来是使用Netscape浏览器)
    Accept-Language:cn   (表明希望优先得到中文版本的文档)
    (最后有一个空行)
    

    2、响应报文

      相对应的,对于响应报文来说,最主要的特点是:其开始行(也叫状态行)由三部分组成,即版本、状态码、解释状态码的简单短语

      而这里主要需要理解的就是状态码了,状态码都是三位数字,分为5大类共33种。

    • 1xx 表示通知信息的,如请求收到了或正在进行处理。
    • 2xx 表示成功,如接受或知道了。
    • 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
    • 4xx 表示客户的差错,如请求中有错误的语法或不能完成。
    • 5xx 表示服务器的差错,如服务器失效无法完成请求。

      常用状态码如下:

    状态码 含义
    100 请求已经接收,客户端可以继续发送请求
    101 服务器已经收到并且理解了客户端的请求
    200 一切正常
    204 请求成功,无资源可返回
    206 范围请求,请求范围内资源正常返回
    301 永久重定向
    302 暂时重定向,URL可能还会改变
    400 请求存在语法错误
    401 请求需要有通过HTTP认证的认证信息
    403 禁止访问
    404 资源没找到,not found
    500 服务端处理请求发生了错误,或web应用存在某些bug或临时的故障
    503 服务器过载或者临时维护
    504 网关超时,代理服务器等待应用服务器响应时的超时

      以下是一个响应报文的例子:

    HTTP/1.1 301 Moved Permanently   (永久重定向)
    Location:http://www.xyz.edu/ee/index.html
    
  • 相关阅读:
    (转)if __name__ == '__main__' 如何正确理解?
    (转)Django配置mysql数据库
    (转)Python虚拟环境pyenv、venv(pyvenv)、virtualenv之间的区别,终于搞清楚了!
    找出Framework 4.0 新增的方法和新增的类(下)
    C# MBG 扩展方法类库 分享
    是技术还是态度,网易的视频Title
    不要返回null之EmptyFactory
    你知道这段代码的输出吗?
    C# 4.0 大数的运算,BigInteger
    CleanCode: 面向过程 PK 面向对象
  • 原文地址:https://www.cnblogs.com/gzshan/p/11125089.html
Copyright © 2020-2023  润新知