HTTP连接透明代理

时间:2015-03-16 10:02:25

标签: http proxy connect digest-authentication

我正在尝试编写(并理解)透明代理。

我的设置看起来像这样

客户端浏览器---> TProxy ---->上游代理------>云

当客户端浏览器发出GET请求时,想法是TProxy然后将CONNECT到Upstream代理。上游代理需要摘要式身份验证。所以,基本上流程看起来像

Client Browser ---> TProxy --------> Upstream Proxy ---------------> cloud 
GET BBC.co.uk
                    CONNECT 
                                       407 PROXY AUTH REQUIRED
                    CONNECT
               (with proxy-authorization)

                                       200 OK
                    GET BBC.co.uk

一旦CONNECT授权成功,我感到很困惑。 我想现在修改原始的GET请求包含一个 代理授权标题?

或者原始的GET请求是否会在另一个http标头中进行隧道传输,如

HTTP Header
 Proxy Authorization
  HTTP Header (GET BBC.CO.UK)
  Data

或者我可以按原样传递原始GET请求?

我刚开始使用http,并希望得到任何帮助。

由于

2 个答案:

答案 0 :(得分:2)

从透明代理验证上游时,Proxy-Authorization标头仅适用于CONNECT。 GET请求发生在隧道内,因此上游显式代理不应该看到它们,并且肯定不期望它们上有任何代理身份验证头。

简而言之,您不必担心GET,但不是因为上面给出的答案,而是因为透明代理和站点之间存在隧道,而显式代理只能看到并验证CONNECT。

答案 1 :(得分:0)

HTTP中没有嵌套标题。

代理 - 无论是否透明 - 始终终止来自客户端的HTTP连接,并向服务器发起新的连接。

这意味着客户端的HTTP GET会转到TProxy。 TProxy向上游代理创建新的GET请求。理想情况下,TProxy将简单地传递所有标头。这将使(几乎)无法察觉。

响应标题的反向相反。

实际上,代理服务器将会并且在许多情况下必须操纵某些标头。他们通常会添加自己的标题(例如,提醒通信伙伴存在代理),他们也可以操作现有的标题。

所以,对你的问题的简短回答:无论你的TProxy收到什么标题字段,都要保持不变,除非你完全理解其含义。