2009-08-25 26 views
1

我正在使用3G UMTS连接。我试图实现HTTP隧道到我的服务器 ,它监听端口80(这是为了绕过客户端的防火墙)。问题是ISP的代理服务器支持不支持持久HTTP连接的HTTP/1.0。持久HTTP与HTTP/1.0可能吗?

因此,在我的客户端/服务器之间的一个http请求/响应迭代之后,ISP的代理将底层TCP连接关闭。

我的客户端收到以下HTTP响应:

HTTP/1.0 200 OK 
Content-Type: application/octet-stream 
Content-Length: yyy 
X-Cache: MISS from ipmr5 
Proxy-Connection: close 
Content data 

,而我的服务器实际上发送:

HTTP/1.1 200 OK 
Connection: Keep-Alive 
Content-Type: application/octet-stream 
Content-Length: yyy 
Content data 

有什么解决方法吗?

+0

GNU httptunnel的期限很少。当我通过以太网连接到服务器时很好用。当我尝试通过3G UMTS连接到服务器时根本不起作用。服务器没有收到任何邮件 – mrvincenzo 2009-08-26 08:29:10

回答

3

您可以随时使用HTTPS。你将失去代理提供的任何好处(比如缓存),但是你的所有HTTP头将按照你发送的那样到达服务器。

+0

我猜想发送到端口80(端口443被阻塞)的HTTPS流量无论如何都会经过ISP的代理。我不确定代理会让非HTTP流量通过。 – mrvincenzo 2009-08-25 11:34:32

+0

我已经成功地使用了它(我的网络运营商代理强制压缩所有响应,客户端无法处理)。虽然在我的情况下443端口没有被阻塞 – user86614 2009-08-25 12:23:52

1

HTTP 1.0代理(它似乎是您的ISP使用的)不应与Connection:Keep-Alive一起用于持久连接。原因如下:RFC-2068(第19.7.1节)。简短的版本,基本上是,您的服务器正在为您正在使用的代理服务器发送一个无效的头。

+0

我没有选择使用ISP的代理,ISP为我选择了。 – mrvincenzo 2009-08-25 08:45:33

+0

他的意思是..当你的客户端向服务器发送请求时,代理将其降级到http1.0(或应该是),在这种情况下,你的服务器不应该使用http1.1 – meandmycode 2009-08-26 08:34:29

+0

meandmycode:假设我的服务器以http/1.0响应。代理仍然会发送“代理连接:关闭”,并拆除我的底层套接字,因为它不支持持久http。 – mrvincenzo 2009-08-26 10:43:54