CONNECT 请求方法
CONNECT
HTTP 方法请求代理与目标服务器建立 HTTP 隧道,如果成功,则在隧道关闭之前双向盲目转发数据。
此方法的请求目标是独一无二的,因为它仅包含隧道目标的主机和端口号,以冒号分隔(详情请参阅语法)。任何2XX 成功响应状态码都意味着代理将切换到“隧道模式”,成功响应正文中的任何数据都来自请求目标标识的服务器。
如果网站位于代理之后,并且网络规则强制所有外部流量都必须通过代理,则 CONNECT
方法允许您与该网站建立 TLS(HTTPS)连接。
- 客户端请求代理将 TCP 连接隧道传输到所需目的地。
- 代理服务器代表客户端与服务器建立安全连接。
- 连接建立后,代理服务器会继续中继客户端的 TCP 流。
除了支持通过代理安全访问网站之外,HTTP 隧道还提供了一种方式,允许原本会受到限制的流量(SSH 或 FTP)通过 HTTP(S) 协议传输。
CONNECT
是一种逐跳方法,这意味着如果源服务器前面有另一个入站代理,代理才会转发 CONNECT
请求,因为大多数源服务器不实现 CONNECT
。
警告: 如果您运行的代理支持 CONNECT
,请将其使用限制在一组已知端口或可配置的安全请求目标列表。建立到任意服务器的隧道存在重大风险,特别是当目标是并非用于 Web 流量的知名或保留 TCP 端口时。配置不当的代理可能会被滥用以转发流量,例如 SMTP,从而中继垃圾邮件。
语法
http
CONNECT <host>:<port> HTTP/1.1
示例
代理授权
需要授权才能创建隧道的代理服务器的请求如下所示。有关更多信息,请参阅 Proxy-Authorization
标头。
http
CONNECT server.example.com:80 HTTP/1.1
Host: server.example.com:80
Proxy-Authorization: basic aGVsbG86d29ybGQ=
规范
规范 |
---|
HTTP 语义 # CONNECT |
浏览器兼容性
加载中…
另见
- HTTP 请求方法
- HTTP 响应状态码
- HTTP 标头
- 代理服务器词汇表条目
Proxy-Authorization
标头- 如何通过 HTTP 代理使用 SSH dimoulis.net (2023)