如何在客户端处理 HTTP CONNECT 隧道?
How to handle HTTP CONNECT tunnel on client side?
我正在向客户端添加对 HTTP CONNECT 请求的支持,但我似乎无法正确处理隧道。
我可以向代理发送一个 CONNECT 请求,该请求的状态代码为 200。这 RFC 告诉我隧道已经与终端服务器形成。
如何从套接字的角度使用此隧道?
在客户端,我打开的套接字最初收到来自代理的 200 响应。检查响应后,我是否应该向该套接字发送更多数据?
我试过这种方法,客户端就挂了。数据似乎没有到达最终服务器。创建隧道后如何使用此套接字进行正常的HTTP(S)?
After checking the response should I just send more data into that socket?
是的。如果您使用 HTTPS,您现在开始 TLS 握手,然后发送格式正确的 HTTP 请求并读取响应,均通过 TLS。
I tried this approach and the client just hangs. The data doesn't seem to reach the final server.
所以要么是你的握手错误,要么是你的 HTTP 格式不正确。
我正在向客户端添加对 HTTP CONNECT 请求的支持,但我似乎无法正确处理隧道。
我可以向代理发送一个 CONNECT 请求,该请求的状态代码为 200。这 RFC 告诉我隧道已经与终端服务器形成。
如何从套接字的角度使用此隧道? 在客户端,我打开的套接字最初收到来自代理的 200 响应。检查响应后,我是否应该向该套接字发送更多数据? 我试过这种方法,客户端就挂了。数据似乎没有到达最终服务器。创建隧道后如何使用此套接字进行正常的HTTP(S)?
After checking the response should I just send more data into that socket?
是的。如果您使用 HTTPS,您现在开始 TLS 握手,然后发送格式正确的 HTTP 请求并读取响应,均通过 TLS。
I tried this approach and the client just hangs. The data doesn't seem to reach the final server.
所以要么是你的握手错误,要么是你的 HTTP 格式不正确。