CONNECT 请求方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

CONNECT HTTP 方法请求代理与目标服务器建立 HTTP 隧道,如果成功,则在隧道关闭之前双向盲目转发数据。

此方法的请求目标是独一无二的,因为它仅包含隧道目标的主机和端口号,以冒号分隔(详情请参阅语法)。任何2XX 成功响应状态码都意味着代理将切换到“隧道模式”,成功响应正文中的任何数据都来自请求目标标识的服务器。

如果网站位于代理之后,并且网络规则强制所有外部流量都必须通过代理,则 CONNECT 方法允许您与该网站建立 TLSHTTPS)连接。

  • 客户端请求代理将 TCP 连接隧道传输到所需目的地。
  • 代理服务器代表客户端与服务器建立安全连接。
  • 连接建立后,代理服务器会继续中继客户端的 TCP 流。

除了支持通过代理安全访问网站之外,HTTP 隧道还提供了一种方式,允许原本会受到限制的流量(SSH 或 FTP)通过 HTTP(S) 协议传输。

CONNECT 是一种逐跳方法,这意味着如果源服务器前面有另一个入站代理,代理才会转发 CONNECT 请求,因为大多数源服务器不实现 CONNECT

警告: 如果您运行的代理支持 CONNECT,请将其使用限制在一组已知端口或可配置的安全请求目标列表。建立到任意服务器的隧道存在重大风险,特别是当目标是并非用于 Web 流量的知名或保留 TCP 端口时。配置不当的代理可能会被滥用以转发流量,例如 SMTP,从而中继垃圾邮件。

请求有正文
成功响应有正文
安全
幂等
可缓存
允许在 HTML 表单中使用

语法

http
CONNECT <host>:<port> HTTP/1.1
<host>

主机可以是注册的主机名(例如,example.com)或 IP 地址(IPv4、IPv6)。

<port>

十进制端口号(例如,80443)。没有默认端口,因此客户端必须发送一个。

示例

代理授权

需要授权才能创建隧道的代理服务器的请求如下所示。有关更多信息,请参阅 Proxy-Authorization 标头。

http
CONNECT server.example.com:80 HTTP/1.1
Host: server.example.com:80
Proxy-Authorization: basic aGVsbG86d29ybGQ=

规范

规范
HTTP 语义
# CONNECT

浏览器兼容性

另见