HTTP的Connection头部有哪些取值?

  • Post category:Python

HTTP的Connection头部可以指定是否要在请求或响应完成后保持TCP连接,并实现长连接的技术。Connection头部可以由客户端和服务器双方使用,并支持以下取值:

  • keep-alive:在请求/响应完成后保持TCP连接,并允许多个请求和响应使用同一TCP连接。这种方式可以避免多次建立和关闭TCP连接带来的性能消耗,并提高响应速度。例如:

    GET / HTTP/1.1
    Host: www.example.com
    Connection: keep-alive

  • close:在请求/响应完成后关闭TCP连接。这种方式比较适用于一次性请求或响应少量数据的场景,避免不必要的TCP资源占用。例如:

    GET / HTTP/1.1
    Host: www.example.com
    Connection: close

  • Upgrade:请求升级协议。这种取值可以用来实现HTTP升级为其它协议,例如WebSocket。例如:

    GET /chat HTTP/1.1
    Host: server.example.com
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
    Sec-WebSocket-Protocol: chat, superchat
    Sec-WebSocket-Version: 13

  • 其他取值:例如TE、trailers等,都有不同的意义和用法,并不是所有实现都能支持。需要根据实际情况进行定制和选择。

需要注意的是,Connection头部取值可以是一个逗号分隔的列表,例如:

GET / HTTP/1.1
Host: www.example.com
Connection: keep-alive, Upgrade
Upgrade: h2c