gpt4 book ai didi

proxy - 什么时候应该在 HTTP 代理服务器上使用 CONNECT 和 GET HTTP 方法?

转载 作者:行者123 更新时间:2023-12-03 05:55:24 24 4
gpt4 key购买 nike

我正在构建一个 WebClient 库。现在我正在实现代理功能,因此我正在进行一些研究,并且看到一些使用 CONNECT 方法来请求 URL 的代码。

但是在我的网络浏览器中检查它,它没有使用 CONNECT 方法,而是调用 GET 方法。

所以我很困惑。我什么时候应该同时使用这两种方法?

最佳答案

TL;DR Web 客户端仅在知道它与代理通信且最终 URI 以 https:// 开头时才使用 CONNECT >.

当浏览器显示:

CONNECT www.google.com:443 HTTP/1.1

这意味着:

Hi proxy, please open a raw TCP connection to google; any following bytes I write, you just repeat over that connection without any interpretation. Oh, and one more thing. Do that only if you talk to Google directly, but if you use another proxy yourself, instead you just tell them the same CONNECT.

请注意,这并没有提到 TLS (https)。事实上,CONNECT 与 TLS 是正交的;您可以只拥有一个,也可以拥有其他,或者两者都拥有。

话虽这么说,CONNECT 的目的是允许端到端加密的 TLS session ,因此代理(或整个代理)无法读取数据链)。即使代理根本不理解 TLS,它也能工作,因为 CONNECT 可以在纯 HTTP 中发出,并且只需要代理复制原始字节即可。

但是与第一个代理的连接可以是 TLS (https),​​尽管这意味着您和第一个代理之间的流量进行双重加密。

显然,当直接与最终服务器对话时,CONNECT 没有任何意义。您只需开始谈论 TLS,然后发出 HTTP GET。终端服务器通常完全禁用CONNECT

对于代理来说,CONNECT 支持会增加安全风险。任何数据都可以通过 CONNECT 传递,甚至是 192.168.1.* 上的服务器的 ssh 黑客攻击尝试,甚至是发送垃圾邮件的 SMTP。外界将这些攻击视为由代理发起的常规 TCP 连接。他们不关心原因是什么,他们无法检查HTTP CONNECT是否是罪魁祸首。因此,代理有责任保护自己免受滥用。

关于proxy - 什么时候应该在 HTTP 代理服务器上使用 CONNECT 和 GET HTTP 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11697943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com