首页/网络/协议速查/CONNECT 建立隧道
HTTP 方法与状态码91 条

CONNECT 建立隧道

请求代理服务器与目标主机建立 TCP 隧道,用于 HTTPS 等端到端加密流量穿越代理。

协议速查网络更新于 2026-10-13

CONNECT 让代理开路

CONNECT 请求代理服务器替客户端与目标主机建立一条 TCP 隧道,隧道建好后这条连接上只传输字节流,代理不再解析内容。它最典型的用途是让 HTTPS 流量穿越正向代理:客户端先用 CONNECT 打通到目标 443 的通道,再在这条通道里完成 TLS 握手。正因为代理此时变成了通用转发器,出于安全考虑通常只允许连接白名单端口,绝大多数场景只放行 443。

基本信息

方法名CONNECT
作用经代理建立到目标主机与端口的字节流隧道
规范RFC 9110 第 9.3.6 节
响应2xx 表示隧道建立成功,常见 200 Connection Established
版本差异HTTP/1.1 使用 CONNECT 方法;HTTP/2 通过扩展 CONNECT 实现,见 RFC 8441
权限要求由代理决定目标与端口的白名单,属于代理策略而非协议限制

隧道请求与客户端用法

隧道请求与客户端用法
# 直接与代理对话:请求打通到目标 443 的隧道
printf 'CONNECT www.example.com:443 HTTP/1.1\r\nHost: www.example.com:443\r\n\r\n' | nc proxy.example.com 3128
# HTTP/1.1 200 Connection Established      # 隧道建立成功,之后是纯字节流
curl -v -x http://proxy.example.com:3128 https://www.example.com/ 2>&1 | grep -iE 'CONNECT|established'
curl -v -x http://proxy.example.com:3128 -p --proxytunnel telnet://10.0.0.9:8080   # 非 443 端口的隧道用法

应答与排障

应答含义排查方向
200 Connection Established隧道建立成功之后按 TLS 握手继续看,代理不再参与
403 Forbidden代理拒绝该目标或端口核对代理的白名单与端口策略
407 Proxy Authentication Required代理要求认证按 Proxy-Authenticate 提示补充代理凭据
502 Bad Gateway代理无法连上目标检查目标可达性与代理的出网策略
无应答或超时连代理本身都不通确认代理地址与端口是否可达

典型使用场景

  • 企业内网通过正向代理访问外网 HTTPS 站点
  • 排查代理环境下的证书与握手问题,确认隧道是否真的建立成功
  • 客户端工具配置代理时验证代理是否支持隧道方式
  • 识别代理日志里的 CONNECT 记录,判断流量走向与目标分布
  • 评估代理策略安全性,检查是否被放开了通配端口
2xx 之后连接上只会传输字节流,代理不再解析内容,因此它无法缓存或改写隧道内的 HTTPS 内容。反过来说,用户与目标之间的加密内容对代理是不可见的,日志里通常只能看到目标域名与端口。
代理如果允许 CONNECT 到任意端口,就等于对外开放了通用 TCP 转发能力,既可能被滥用穿透内网,也会带来合规风险,应严格限制目标与端口。

易错点

  • 代理放开 CONNECT 到任意端口,被当作通用跳板使用,造成内网暴露与合规风险
  • 把 407 当成目标站点故障排查,实际是代理要求认证,问题在客户端凭据配置
  • 只配了代理地址没确认代理是否支持隧道方式,HTTPS 访问直接失败,却一直在查证书问题
  • 在需要观测流量的场景使用隧道代理,以为能审计 HTTPS 内容,实际内容全程不可见

数据来源与参考

  • RFC 9110 §9.3.6 CONNECT
  • RFC 8441 HTTP/2 扩展 CONNECT

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌