CONNECT 后从代理收到 HTTP 代码 501

Posted

技术标签:

【中文标题】CONNECT 后从代理收到 HTTP 代码 501【英文标题】:Received HTTP code 501 from proxy after CONNECT 【发布时间】:2017-06-25 15:48:11 【问题描述】:

每当我尝试从 bitbucket 克隆存储库时,都会出现以下错误:

致命:无法访问“https://user_name@bitbucket.org/user_name/repo_name.git/”:

无法理解问题所在。我正在从 bitbucket 存储库 Web 复制 git clone 命令。我也设置了 git http.proxy 但没有用。

如果需要更多信息,请告诉我。

谢谢

【问题讨论】:

【参考方案1】:

很明显,您的代理不支持HTTP CONNECT tunneling,这就是它响应HTTP 501 (Not implemented) 代码的原因:

HTTP CONNECT 隧道

HTTP 代理服务器后面的 HTTP 隧道的一种变体是 使用“CONNECT”HTTP 方法。

在这种机制中,客户端请求 HTTP 代理服务器转发 TCP 连接到所需的目的地。然后服务器继续 代表客户端建立连接。一旦连接有了 已被服务器建立,Proxy服务器继续代理 进出客户端的 TCP 流。请注意,只有初始 连接请求是 HTTP - 之后,服务器只是代理 建立 TCP 连接。

这种机制是 HTTP 代理后面的客户端可以访问的方式 使用 SSL(即 HTTPS)的网站。

并非所有 HTTP 代理服务器都支持此功能,即使是那些 做,可能会限制行为(例如只允许连接到 默认 HTTPS 端口 443,或阻止不出现的流量 是 SSL)。

【讨论】:

嗯,我应该让我的网络管理员允许代理在没有 SSL 的情况下工作吗? 那行不通,因为 Bitbucket 对所有内容强制执行 SSL。

以上是关于CONNECT 后从代理收到 HTTP 代码 501的主要内容,如果未能解决你的问题,请参考以下文章

C/S程序的一般流程和基本socket函数

使用 HTTPS 代理的套接字上的 HTTPS 数据

HTTP代理协议的CONNECT方法

HTTP代理协议 HTTP/1.1的CONNECT方法

HTTP代理协议 HTTP/1.1的CONNECT方法

F5 iRule 用于管理 HTTP 代理 CONNECT 请求