在进入真正的问题之前,让我解释一下我的项目是如何工作的:为了简单起见,我的代理在我的笔记本电脑上,客户端(我的浏览器)也在那里;例如,远程服务器将是 YouTube。
由于 SwitchOmega 插件,客户端连接到代理的特定端口:客户端想要连接到 www.youtube.com 并且代理收到以下请求:
CONNECT www.youtube.com:443 HTTP/1.1
Host: www.youtube.com:443
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36
Run Code Online (Sandbox Code Playgroud)
有人告诉我,当代理收到CONNECT
请求时,它应该打开一个到 IP:Port 的 TCP 连接,200 OK
向客户端返回一条消息并发送数据,直到连接的一侧关闭。
使用另一个跟踪 HTTP 请求的插件 HTTP Trace,我在浏览器上看到了不同的请求:
GET https://www.youtube.com/
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
and other data...
Run Code Online (Sandbox Code Playgroud)
那么,为什么我的代理会CONNECT www.youtube.com:443 HTTP/1.1
在 HTTP Trace 显示时收到GET https://www.youtube.com/
?他们的意思是一样的吗?