如何在客户端处理HTTP CONNECT隧道?

我正在为客户端添加对HTTP CONNECT请求的支持,但我似乎无法正确处理隧道。

我能够向代理发送CONNECT请求,响应状态码为200。这个RFC告诉我隧道已与终端服务器建立。

从套接字的角度来看,我该如何使用这个隧道? 在客户端上,我打开的套接字最初接收到来自代理的200响应。检查完响应后,我是否应该向该套接字发送更多数据? 我尝试了这种方法,但客户端就会挂起。数据似乎无法到达最终服务器。如何在创建隧道后使用此套接字进行正常的HTTP(S)?

点赞
用户207421
用户207421

检查响应后,我应该只是向该套接字发送更多数据吗?

是的。 如果您正在使用 HTTPS,则立即启动 TLS 握手,然后通过 TLS 发送格式正确的 HTTP 请求并读取响应。

我尝试了这种方法,但客户端只是挂起。 数据似乎没有到达最终服务器。

因此,您的握手可能有误或者您的 HTTP 格式不正确。

2017-06-03 06:23:11