我正在尝试编写(并理解)一个透明的代理。
我的设置如下所示
客户端浏览器-> TProxy ->上游代理->云
当客户端浏览器发出GET请求时,想法是TProxy将连接到上游代理。上游代理需要摘要身份验证。因此,从本质上讲,流程看起来就像
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我搞不懂一旦连接授权成功后会发生什么。我现在是否应该修改原始的GET请求以包含Proxy-Authorization标头?
或者,原始的GET请求随后会在另一个http标头中以隧道方式传送,例如
HTTP Header
Proxy Authorization
HTTP Header (GET BBC.CO.UK)
Data或者我可以按原样传递原始的GET请求?
我刚刚开始使用http,如果有任何帮助我将不胜感激。
谢谢
发布于 2015-03-17 02:50:06
当您从透明代理上游进行身份验证时,Proxy-Authorization标头仅应用于连接。GET请求发生在隧道内,因此上游显式代理不应该看到它们,并且肯定不期望它们上有任何代理身份验证标头。
简而言之,您不需要担心GET,但这不是因为上面给出的答案,而是因为透明代理和站点之间有一个隧道,而显式代理只看到并验证连接。
发布于 2015-03-16 18:12:41
HTTP中没有嵌套头这样的东西。
代理-无论是否透明-总是终止来自客户端的HTTP连接,并启动到服务器的新连接。
这意味着来自客户端的HTTP GET将发送到您的TProxy。TProxy会向上游代理创建一个新的GET请求。理想情况下,TProxy将简单地传递所有标头。这将使它(几乎)不可察觉。
响应头也是如此。
在现实中,代理服务器将,并且在许多情况下必须操作一些标头。它们通常会添加自己的报头(例如,提醒通信伙伴注意代理的存在),并且它们还可以操作现有的报头。
因此,对您的问题的简短回答是:无论您的TProxy接收到什么头字段,都要原封不动地传递它,除非您完全理解其中的含义。
https://stackoverflow.com/questions/29074026
复制相似问题