2017-06-02 136 views
0

我正在向客戶端添加對HTTP CONNECT請求的支持,而我似乎無法正確處理隧道。如何在客戶端處理HTTP CONNECT隧道?

我能夠發送一個CONNECT請求到代理,這個代理的狀態代碼是200.這個RFC告訴我這個隧道已經和最終服務器一起形成了。

如何從套接字視角使用此隧道? 在客戶端,我打開的套接字最初接收來自代理的200響應。在檢查迴應後,我應該只是發送更多的數據到該套接字? 我試過這種方法,客戶端掛起。數據似乎無法到達最終服務器。如何使用此套接字在創建隧道後執行正常的HTTP(S)?

回答

0

檢查迴應後,我應該只是發送更多的數據到該套接字?

是的。如果您正在講HTTPS,您現在開始TLS握手,然後發送正確形成的HTTP請求並通過TLS讀取響應。

我試過這種方法,客戶端只是掛起。數據似乎無法到達最終服務器。

因此,無論您的握手是錯誤的還是您的HTTP格式錯誤。

+0

我仍在調查pcap文件。完成後會通知正確的解決方案。 – whoami

+0

'正確的解決方案'是修復你的代碼。由於你還沒有發佈,還有什麼其他答案可能? – EJP

+0

是的。我現在修復了它,這是我發送標題和請求行的順序的問題。 HTTP在某種意義上是畸形的,我認爲我可以將你標記爲正確的答案 – whoami