HTTP基础知识

263 阅读3分钟

HTTP是什么?

Hypertext Transfer Protocol,超文本传输协议,一种在网络上通过报文传输 HTML 内容的协议。

HTTP是怎么工作的?

桌面浏览器

用户输入地址后回车或者点击链接 -> 浏览器拼接HTTP报文并发送请求给服务器 -> 服务器处理请求后发送响应报文给浏览器 -> 浏览器解析响应报文并使用渲染引擎显示到屏幕上

手机APP

用户点击触发联网请求 -> Android 程序调用拼接 HTTP 报文并发送请求给服务器 -> 服务器处理请求后发送响应报文给手机 -> Android 程序处理响应报文并做出相应处理(如存储数据、显示数据到屏幕上等)

HTTP 报文格式

  • 请求报文

    请求报文由请求行、Headers、Body三个部分构成。

    GET /users HTTP/1.1
    Host: api.baidu.com
    Content-Type: text/plain
    Content-Length: xx
    xxxxxx....
    

    第一行对应请求行: GET 是请求方法、/users 是资源路径、HTTP/1.1 是 HTTP 版本。2-4行对应 Headers,用于表示当前请求的报文属性。5行对应 Body , Body 可以有多行也可以没有,内容长度由 Content-Length 指定。

  • 响应报文

    响应报文由状态行、Headers、Body构成。

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Encoding: gzip
    xxxxx
    

    响应报文与请求报文区别在于第一行,响应报文第一行对应状态行,HTTP/1.1 对应 HTTP 版本, 200 是状态码(状态码对应含义下文有说明),OK 是状态对应的消息。响应报文 Headers 和 Body 与请求报文基本一致。

HTTP 请求方法及常见状态码

常见请求方法

  • GET
    • 用于获取资源
    • 对服务器数据不修改
    • 无 Body 内容
  • POST
    • 用于增加或者修改资源
    • 发送给服务器的数据存在 Body 中
  • PUT
    • 用于修改资源
    • 发送给服务器的数据存在 Body 中
  • DELETE
    • 用于删除资源
    • 无 Body 内容
  • HEAD
    • 与 GET 基本一样,用于获取资源,对服务器内容不修改,无 Body
    • 与 Get 唯一区别在于,HEAD 返回的响应报文中无 Body

常见状态码

  • 1XX 临时性消息
    • 100 继续发送
    • 101 正在切换协议
  • 2XX Success 标识
    • 200 OK
    • 201 创建成功
  • 3XX 资源重定向
    • 301 资源永久移动
    • 302 资源暂时移动
  • 4XX 客户端错误
    • 客户端请求错误
    • 401 认证失败
    • 404 资源未找到
  • 5XX 服务器错误
    • 500 服务器内部错误

HTTP 报文常见 Headers

Header

Header 是 HTTP 消息的元数据(metadata),最重要的三个 Header:Host、Content-Length、Content-Type。

  • Host

    • 目标主机。此处的目标主机是指目标服务器上用于定位资源的子服务器。
  • Content-Length

    • 指定 Body 的长度,单位字节。
  • Content-Type

    • 用于指定 Body 数据的类型。常见有以下几类。

      • text/html

        请求 Web 页面是返回响应的类型, Body 中返回 html 文本。

      • application/x-www-form-urlencoded

        Web 页面纯文本表单的提交方式。

      • multipart/form-data

        Web 页面有二进制文件时的提交方式。

      • application/json

        请求报文中提交 json。

      • Image/jpeg

        请求报文中提交二进制 jpeg 数据。

  • Transfer: chunked

    分块传输、常用于断点续传和多线程下载场景。

  • Location

    指定重定向的目标资源。

  • User-Agent

    用户代理,表示客户端来源,可根据此判断网页渲染方式(如手机端、PC端)

  • Range/Accept-Ranges

    数据范围。

  • Cookie

    存储于客户端的,用于在服务器端快速鉴定身份的“ id card ”。

  • Authorization

    登录授权。

  • Cache

    在客户端或者中间网络节点缓存数据,降低从服务器取数据的频率,以提高网络性能。