美文网首页
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