我正在爲瀏覽器製作代理應用程序。它只能使用標準庫。到目前爲止,我已經設法創建了服務器。當試圖從客戶端訪問網頁時,我得到了以下信息:Java獨立代理程序
CONNECT gmail.com:443 HTTP/1.1 的User-Agent:Mozilla的/ 5.0火狐/ 49.0 代理連接:保持活躍 連接:保持活躍 主機:gmail.com:443
我的問題是:爲了處理請求使用什麼?如何處理文件下載?
我正在爲瀏覽器製作代理應用程序。它只能使用標準庫。到目前爲止,我已經設法創建了服務器。當試圖從客戶端訪問網頁時,我得到了以下信息:Java獨立代理程序
CONNECT gmail.com:443 HTTP/1.1 的User-Agent:Mozilla的/ 5.0火狐/ 49.0 代理連接:保持活躍 連接:保持活躍 主機:gmail.com:443
我的問題是:爲了處理請求使用什麼?如何處理文件下載?
一旦你拿到CONNECT
命令,做什麼是問:創建上游連接,並返回適當的成功/失敗反應。如果上游連接成功,您現在要做的就是同時在兩個方向上覆制字節。端點將處理所有SSL問題,上傳,下載等。您無需擔當其他角色。
代理的一般行爲如下:
我沒有進入改變請求/響應頭,緩存等併發症
現在從上面,您正在與gmail.com refer進行SSL連接。
瀏覽器實際上發送的請求是正確的,在這種情況下,您需要實施握手,並使用HTTPS卸載SSL連接到gmail,並通過與瀏覽器協商的SSL將瀏覽器收到的響應發送給瀏覽器。
的建議是使用HTTP,而不是HTTPS,如果這不是一個生產平地機的系統,並嘗試了第一的理念
這是不正確的,它不是它在你的[鏈接]中說的(http://stackoverflow.com/questions/11697943/when-should-one-use-connect-and-get-http-methods-at -http代理服務器)。 – EJP
該鏈接是關於CONNECT請求的參考和一些細節 – Ironluca
您的鏈接正確地說'使用SSL(HTTPS),只有兩個遠程端點了解請求,並且代理無法解密它們。因此,它所做的一切就是使用CONNECT打開該隧道,並讓兩個端點(網絡服務器和客戶端)直接對話,這與您的答案相矛盾:特別是關於「在您的一側卸載SSL」的部分。 – EJP