Skip to content
zk-123 edited this page Dec 4, 2019 · 1 revision

HTTP代理协议

协议

HTTP代理就是解析请求过来的HTTP报文,与目标地址建立连接,将客户端的请求报文转发给目标地址,并将目标地址返回的报文转发给客户端。

但是HTTPS是经过公钥加密过的字节流,代理解析到的是乱码,所以不能采用传统的解析转发的方式去代理,除非获取服务器上的私钥,否则整个回话过程将被加密。 HTTP 1.1协议的CONNECT方法解决了这个问题,CONNECT方法给予一个目标地址,要求代理服务器建立一条到目标地址的隧道,之后的TSL认证和数据交换将在隧道中进行。

HTTP报文转发

|-- 客户端 ---|       |------------------- 代理端 --------------------------|      |------ 目标服务器 -------|
     
 -------------         -----------           --------         ------------         ----------------------
| http请求报文 |------>|  解析请求头 |--------| 建立连接 |------|  转发请求报文 |------|  处理并产生HTTP相应报文 |
 -------------         -----------           --------         ------------         ----------------------
                                                                                              |
                                                                                              | 产生
                                                                                              |
 -------------           -------------------------------------------------         ----------------------
| 接受到响应报文 |<-------|              转发响应报文给客户端                  |------ |       响应报文        |
 -------------           -------------------------------------------------         ----------------------

HTTP隧道盲转


|--- 客户端 ---|       |------------------- 代理端 --------------------------|      |------ 目标服务器 -------|
     
 -------------        -----------           --------  
| http请求报文 |----->|  解析请求头 |--------| 建立连接 |
 -------------        -----------           --------  
                                                |                                                 
 -------------                                  |            
|   200 Ok    |<--------------------------------
 ------------- 
 
 -------------         -----------------------------------------------------         ----------------------
|   请求字节   |------>|                       盲转请求                       |------>|     处理并返回数据     |
 -------------         -----------------------------------------------------         ----------------------
                                                                                               |
                                                                                               | 产生
                                                                                               |
 -------------         -----------------------------------------------------         ----------------------
|   响应字节   |<------|                       盲转响应                       |<------|       响应字节        |
 -------------         -----------------------------------------------------         ---------------------- 
 

简介

HTTP代理服务端是基于这两种代理方式进行实现的。

Clone this wiki locally