URL和URI

绝对URI
image.png

  • 服务器地址:DNS解析 / IPv4 / 方括号中的IPv6

    HTTP协议

    http请求由客户端发起,服务器端响应并返回
    请求报文:请求方法、请求URI、协议版本、请求首部字段、内容实体
    响应报文:协议版本、状态码、原因短语、响应首部字段、实体
    持久连接:HTTP/1.1中,所有连接默认持久连接
    管线化:同时并行发送多个请求

    http方法

  • get 获取资源

  • post 传输实体主体
  • put 传输文件
  • head 获得报文首部
  • delete 删除文件
  • options 询问支持的方法
  • trace 追踪路径
  • connect 要求使用隧道协议代理连接

    cookie

    http是无状态的协议,要保存状态需要使用cookie技术
    服务器发送的响应报文中会中使用set-cookie的首部字段通知客户端保存cookie。下次客户端发送请求时会自动添加cookie后发送。服务器可通过cookie找到对应的状态历史

    HTTP报文

    报文结构

    image.png
    image.png

    报文传输

  • 压缩:gzip / compress / deflate / identity

  • 分块传输编码(chunked transfer coding)
  • 由客户端负责解码
  • 多部分对象集合(multipart)
    • multipart/form-data
    • multipart/byteranges
  • 范围请求:请求中可以使用Range获取资源的部分bytes
    服务器支持该方法会返回206 + multipart/byteranges,不支持会返回200 + 全部内容

    内容协商

    客户端和服务器就响应的资源做交涉后,服务器端返回客户端最合适的资源

  • 服务器驱动协商:更具请求首部字段为参考,由服务器自动选择

  • 客户端驱动协商:用户做浏览器可选列表中手动选择
  • 透明协商:两种方法结合

状态码

image.png

2XX 成功

  • 200 OK
  • 204 No Content
    客户端向服务器发送信息,无需更新页面
  • 206 Partial Content
    成功执行范围请求

    3XX 重定向

    301 / 302 / 303 大概率导致post请求变成get请求

  • 301 Moved Permanently
    请求的资源分配到了新的URI,应更新书签

  • 302 Found / 303 See Other / 307 Temporary Redirect
    临时重定向,仅本次访问使用新uri
  • 304 Not Modify
    服务器允许访问资源,但可以直接使用客户端内未过期但缓存

    4XX 客户端错误

  • 400 Bad Request
    报文语法错误

  • 401 Unauthorized
    需要认证,发送的请求需要通过HTTP认证(BASIC / DIGEST)
  • 403 Forbidden
    访问被服务器拒绝
  • 404 Not Found
    无法找到请求的资源

    5XX 服务器错误

  • 500 Internal Server Error
    服务器端发生错误

  • 503 Service Unavailable
    服务器不可用(超负载或者停机)