美文网首页
Http协议

Http协议

作者: cAce | 来源:发表于2017-08-25 11:07 被阅读8次

    主要特点

    • 简单快速:每个资源都是固定的
    • 灵活 通过一个Http协议可以进行不同类型的数据传输
    • 无连接: 连接一次会断开,不会保持连接
    • 无状态: 客户端和服务端无法区分连接者的身份

    报文组成

    • 请求报文:请求行 + 请求头 + 空行 + 请求体
    • 响应报文:状态行 + 响应头 + 空行 + 响应体

    Http方法

    • GET:获取资源
    • POST:传输资源
    • Put:更新资源
    • Delete:删除资源
    • HEAD:获得报文首部

    POST和GET的区别

    • GET在浏览器回退时是无害的,POST会重复提交请求
    • GET产生的URL地址可以被收藏
    • GET请求会被浏览器主动缓存而POST不会,需要手动设置
    • GET请求只能进行url编码,POST支持多种格式
    • GET请求参数会被完整的保存在浏览器里,POST不会被保存
    • GET请求在URL中传输的参数是有长度限制的(2kb)
    • GET参数通过URL传递,POST通过Request.body
    • GET只接受ASCII的数据字符
    • POST比GET更安全,GET的参数直接暴露在URL上

    状态码

    • 1xx:标识信息 表示请求已接受,继续处理
    • 2xx:成功
      • 206:返回Range头中的内容
    • 3xx 重定向
      • 301永久
      • 302临时
      • 304缓存重定向,服务端会判断客户端是否已经缓存数据
    • 4xx:客户端错误 常见的有403资源禁止访问(一般都是权限问题),404
    • 5xx:服务器错误

    HTTP持久连接

    • 保持连接的有效性,HTTP版本必须在1.1以上

    管线化

    • 请求打包 -> 分别响应
      传统的请求方式 请求1 -> 响应1 -> 请求2 -> 响应2 -> 请求3 -> 响应3
      管线化后 (请求1 + 请求2 + 请求3) -> 响应1 -> 响应2 -> 响应3
    • 注意
      • 只有GET和HEAD可以管线化
      • 初次建立连接时不应启动管线化
      • 管线化不会影响响应顺序
      • 服务器只需支持管线化,但不需要对管线化做出处理,只需能接收请求即可
      • 因为服务端问题,管线化带来的性能提升并不大,并且很多代理和服务端对管线化的支持并不好,因此大多浏览器默认关闭管线化

    相关文章

      网友评论

          本文标题:Http协议

          本文链接:https://www.haomeiwen.com/subject/nkhudxtx.html