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

瀏覽器相容性

另見