Http知识

95 阅读3分钟

HTTP 概述

HTTP(HyperText Transfer Protocol)是一种用于在客户端和服务器之间传输数据的协议。它是Web的基础,支持文本、图像、视频等各种类型的数据传输。

1. HTTP 的特点

  • 无状态:每个请求都是独立的,服务器不会记住之前的请求状态。
  • 灵活性:支持多种数据格式(如HTML、JSON、XML等)。
  • 可扩展性:可以通过HTTP头部添加自定义信息。
  • 支持多种方法:如GET、POST、PUT、DELETE等。

2. HTTP 请求与响应

HTTP通信由请求和响应组成。

2.1 HTTP 请求

HTTP请求由以下部分组成:

  • 请求行:包含请求方法、请求URI和HTTP版本。
  • 请求头:包含关于请求的元数据(如内容类型、用户代理等)。
  • 请求体(可选):包含要发送给服务器的数据,通常在POST请求中使用。

示例请求

bash
复制
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 34

{"username": "john", "password": "123456"}

2.2 HTTP 响应

HTTP响应由以下部分组成:

  • 状态行:包含HTTP版本、状态码和状态描述。
  • 响应头:包含关于响应的元数据(如内容类型、长度等)。
  • 响应体:包含服务器返回的数据。

示例响应

css
复制
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 45

{"id": 1, "username": "john", "status": "created"}

3. HTTP 方法

HTTP定义了一组方法,用于指定对资源的操作:

  • GET:请求指定的资源,通常用于获取数据。
  • POST:向指定资源提交数据,通常用于创建新资源。
  • PUT:更新指定资源的全部数据。
  • PATCH:更新指定资源的部分数据。
  • DELETE:删除指定资源。
  • HEAD:类似于GET,但只请求响应头,不返回响应体。
  • OPTIONS:请求服务器支持的HTTP方法。

4. HTTP 状态码

状态码用于表示服务器对请求的处理结果。常见的状态码包括:

  • 1xx(信息性状态码)

    • 100 Continue:继续请求。
  • 2xx(成功状态码)

    • 200 OK:请求成功。
    • 201 Created:请求成功并创建了新资源。
    • 204 No Content:请求成功,但没有返回内容。
  • 3xx(重定向状态码)

    • 301 Moved Permanently:资源已永久移动。
    • 302 Found:资源临时移动。
  • 4xx(客户端错误状态码)

    • 400 Bad Request:请求无效。
    • 401 Unauthorized:未授权,需要身份验证。
    • 403 Forbidden:禁止访问。
    • 404 Not Found:找不到请求的资源。
  • 5xx(服务器错误状态码)

    • 500 Internal Server Error:服务器内部错误。
    • 503 Service Unavailable:服务不可用。

5. HTTP 头部

HTTP头部用于传递额外的信息,分为以下几类:

  • 请求头:如User-Agent(客户端信息)、Accept(可接受的内容类型)等。
  • 响应头:如Content-Type(响应内容类型)、Content-Length(响应体长度)等。
  • 通用头:如Date(消息发送的日期)等。
  • 实体头:如Content-Encoding(内容编码)等。

6. HTTPS

HTTPS(HTTP Secure)是HTTP的安全版本,通过SSL/TLS加密传输数据,确保数据安全性和完整性。HTTPS使用443端口而不是HTTP的80端口。

7. HTTP/2 和 HTTP/3

  • HTTP/2:引入了多路复用、头部压缩和服务器推送等特性,提升了性能和效率。
  • HTTP/3:基于QUIC协议,进一步减少延迟,提高连接速度和安全性。