HTTP协议

HTTP

概述

  • Hyper Text Transfer Protocol :超文本传输协议
  • 特点:

    1. 基于TCP/IP的高级协议
    2. 默认端口号:80
    3. 基于请求/响应模型:一次请求对应一次响应
    4. 无状态:每次请求之间相互独立,不能交互数据
  • 历史版本

    • 1.0 :每次请求都会建立新的连接

    • 1.1 :可以复用连接

请求消息数据格式

  • 请求行

    • 格式:请求方式 请求url 请求协议/版本
    • 请求方式:共7种

      • GET

        1. 请求参数在请求行中,(在url后)
        2. 请求的url长度有限制
        3. 安全性低
      • POST

        1. 请求参数在请求体中。
        2. 请求的url长度没有限制
        3. 相对安全
  • 请求头

    • 客户端浏览器告诉服务器的一些信息

    • 格式:请求头名称 : 请求头值1,请求头值2...

    • 常见请求头:

      • User-Agent:浏览器版本信息,可以在服务器端获取该头的信息,解决浏览器的兼容性问题

      • Referer:包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer 请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。

  • 请求空行

    • 空行:用于分割POST请求的请求头和请求体
  • 请求体(正文)

    • 封装POST请求消息的请求参数

响应消息数据格式

  • 响应行

    • 格式:协议/版本 响应状态码 状态码描述
    • 响应状态码:服务器高速客户端浏览器本次请求和响应的一个状态

      1. 1xx:服务器接收客户端消息,但没有接收完成,等待一段时间后,发送1xx状态码

      2. 2xx:成功。200

      3. 3xx:重定向。

        • 302:重定向
        • 304:访问缓存
      4. 4xx:客户端错误。

        • 404:请求路径没有对应的资源
        • 405:请求方式没有对应的doXXX方法
      5. 5xx:服务器错误。500(服务器内部异常)

  • 响应头

    • 格式:头名称:值
    • 常见的响应头:

      • Content-Type:服务器高速客户端本次响应体数据格式以及编码格式

      • Content-disposition:服务器告诉客户端以什么样的格式打开响应体数据

        • in-line:默认值,在当前页眉内打开
        • attachment;filename=xxx:以附件形式打开响应体。(文件下载)
  • 响应空行:分隔响应头和响应体

  • 响应体:传输的数据

Knowledge is priceless, thanks for your support !