• 一文入门 HTTP 协议


    HTTP(Hypertext Transfer Protocol)是一种用于在计算机之间传输超文本的协议。它是构建在TCP/IP协议之上的应用层协议,被用于在Web浏览器和Web服务器之间传递信息。HTTP协议是一种无状态、无连接的协议,它在每个请求和响应之间是独立的,不保留先前的状态信息。

    1. 请求与响应

    HTTP 协议的通信模型基于请求-响应的方式。客户端发送一个请求给服务器,然后服务器返回一个响应。

    请求(Request)

    一个 HTTP 请求由客户端发起,通常由一个请求行、请求头部、空行和请求体组成。

    请求行

    请求行包含请求的方法、请求的URL和HTTP协议的版本。

    GET /index.html HTTP/1.1
    
    • 1

    在这个例子中:

    • GET: 请求方法,表示获取指定资源。
    • /index.html: 请求的资源路径。
    • HTTP/1.1: 使用的HTTP协议版本。
    请求头部

    请求头部包含关于请求的附加信息,例如客户端类型、所支持的数据类型等。

    Host: www.example.com
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
    
    • 1
    • 2
    空行

    空行表示请求头部结束,后面的数据都是请求体。

    
    
    • 1
    请求体

    请求体包含实际发送给服务器的数据,比如 POST 请求中的表单数据。

    username=johndoe&password=secret
    
    • 1

    响应(Response)

    服务器接收到请求后,返回一个响应给客户端。一个 HTTP 响应由一个状态行、响应头部、空行和响应体组成。

    状态行

    状态行包含HTTP协议的版本、一个状态码和相应的状态消息。

    HTTP/1.1 200 OK
    
    • 1

    在这个例子中:

    • HTTP/1.1: 使用的HTTP协议版本。
    • 200: 状态码,表示请求成功。
    • OK: 状态消息,提供关于状态码的简短说明。
    响应头部

    响应头部包含关于响应的附加信息,例如服务器类型、响应的数据类型等。

    Content-Type: text/html
    Content-Length: 1024
    
    • 1
    • 2
    空行

    空行表示响应头部结束,后面的数据都是响应体。

    
    
    • 1
    响应体

    响应体包含实际返回给客户端的数据,比如 HTML 内容。

    DOCTYPE html>
    <html>
    <head>
        <title>Example Pagetitle>
    head>
    <body>
        <h1>Hello, World!h1>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2. HTTP 方法

    HTTP 定义了一些常见的请求方法,每个方法表示一种对资源的操作。以下是一些常见的 HTTP 方法:

    • GET: 请求获取指定资源。
    • POST: 提交数据进行处理,通常用于提交表单。
    • PUT: 请求服务器存储一个资源,通常要指定存储的位置。
    • DELETE: 请求服务器删除指定资源。
    • HEAD: 类似于 GET 请求,但服务器只返回头部信息,不返回实际内容。
    • OPTIONS: 请求获取服务器支持的 HTTP 方法。

    3. URL 结构

    URL(Uniform Resource Locator)是用于标识互联网上资源的地址。它包含了协议、主机、端口、路径和查询参数等信息。

    http://www.example.com:80/index.html?name=john&age=25
    
    • 1
    • http: 协议。
    • www.example.com: 主机名。
    • 80: 端口号。
    • /index.html: 路径。
    • ?name=john&age=25: 查询参数。

    4. 状态码

    HTTP 响应状态码用于表示服务器对请求的处理结果。常见的状态码有:

    • 2xx(成功): 表示请求被成功接收、理解、接受。
    • 3xx(重定向): 要完成请求,需要进一步操作,通常用于重定向。
    • 4xx(客户端错误): 请求包含错误或无法完成,客户端需要处理。
    • 5xx(服务器错误): 服务器在处理请求的过程中发生错误。

    例如,常见的状态码:

    • 200 OK: 请求成功。

    • 201 Created: 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立。

    • 204 No Content: 服务器成功处理了请求,但不需要返回任何实体内容。

    • 301 Moved Permanently: 被请求的资源已永久移动到新位置。

    • 302 Found: 请求的资源现在临时从不同的 URI 响应请求。

    • 304 Not Modified: 自从上次请求后,请求的网页未修改过。

    • 400 Bad Request: 服务器无法理解该请求。

    • 401 Unauthorized: 请求要求身份验证。

    • 403 Forbidden: 服务器理解请求,但拒绝执行。

    • 500 Internal Server Error: 服务器遇到了一个未曾预料的状况,无法完成对请求的处理。

    5. 报文头部

    HTTP 报文头部包含了请求和响应的元信息,提供有关报文主体、服务器和客户端信息的信息。

    常见的请求头部:

    • Host: 指定请求资源所在的服务器。
    • User-Agent: 发起请求的用户代理,通常是浏览器。
    • Accept: 客户端能够处理的媒体类型。

    常见的响应头

    部:

    • Content-Type: 返回的数据类型,例如 text/html、application/json。
    • Content-Length: 返回的数据长度。
    • Server: 服务器信息。

    6. 报文体

    HTTP 报文体包含实际的数据,对于请求报文,报文体可能包含用户提交的表单数据等信息;对于响应报文,报文体包含了服务器返回的实际数据,比如 HTML 内容。

    结语

    HTTP 协议是 Web 世界的基石,了解其基本原理对于 Web 开发者至关重要。本文介绍了 HTTP 的基本请求和响应结构、常见的请求方法、URL 结构、状态码、报文头部和报文体等基本概念。深入理解这些基础概念,将有助于更好地理解 Web 应用的运作原理。

  • 相关阅读:
    ROS导航——环境感知(激光雷达)
    22、Python -- 创建对象和使用对象
    Flink相关
    深度学习 --- stanford cs231学习笔记五(训练神经网络的几个重要组成部分之二,数据的预处理)
    新版HI3559AV100开发注意事项
    线程同步的实现
    libuv初学者学习笔记
    MySQL查询(基础到高级)
    QTday3
    readhat8搭建SFTP双机高可用并配置Rsync数据实时同步
  • 原文地址:https://blog.csdn.net/tgdzsjh/article/details/136193023