PAC文件

HTTP代理的一个流行用法是写一个PAC文件,描述什么样的时候走什么样的代理。经典的PAC文件只有两种返回值,PROXY和DIRECT。如果返回的是PROXY则走代理,DIRECT则是直连。这里的走代理当然是最传统的HTTP代理方式,也就是浏览器与代理之间是明文的连接,不经过SSL加密的。具体浏览器是用HTTP GET/POST还是CONNECT,取决于浏览器要访问的目标服务器是HTTP还是HTTPS的,和PAC文件无关。

Chrome在PAC的PROXY与DIRECT之外添加了第三种返回值,也就是HTTPS。这种返回值的含义与PROXY是一样,都是走代理。区别在于PROXY是明文的连接,HTTPS是SSL加密的连接。所以HTTPS这个返回值的歧义在于让人以为它只用来代理HTTPS流量。因为SPDY是基于SSL的NPN扩展的,所以当浏览器与代理进行SSL握手的时候,可以选择是用HTTP/1.1协议还是SPDY/2还是SPDY/3。于是HTTPS这个PAC返回值,还可以用来支持SPDY,前提当然是代理在NPN里说它支持SPDY,而且浏览器也知道SSL的NPN扩展,而且支持SPDY协议。

另外一个PAC的扩展是苹果给iOS的PAC文件添加的SOCKS返回值。利用这个返回值可以给iPhone配置SOCKS的全局代理。但是这个与本文讨论的HTTP代理就无关了。

总结

可见HTTP代理协议自身来说,就两种:HTTP GET/POST和HTTP CONNECT。一种用来代理HTTP的流量,另外一种用来代理HTTPS的流量。HTTP CONNECT除了可以用来走HTTPS之外,因为代理并不去解析其内容,所以事实上是一个通用的代理隧道。

另外一个维度是客户端与代理之间是一个什么样的连接:不加密的连接,SSL加密的连接,SSL加密同时运行SPDY协议的连接。

所以工作模式共有2*3=6种。


相关内容

    暂无相关文章