我需要开发HTTP代理服务器。我的代理服务器能够从Web Brownser检索HTTP请求。我还可以连接到服务器。我无法理解如何进一步发展:它如何将请求从代理服务器发送到远程服务器。
我有以下查询:
- 请求标题的格式将从HTTP代理服务器发送到远程服务器
- 是我从Web Brownser收到的标题,用于GET,HEAD和POST方法。
我尝试发送整个标题:
获取http://www.gmail.com/http/1.1
接受:text/html,application/xhtml xml,/
接受语言:En-us
用户代理:Mozilla/5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; TRIDEN/5.0)
接受编码:Gzip,Deflate
代理连接:保持现象
主持人:www.gmail.com
或:获取/http/1.1
主机:www.gmail.com:80
您需要从代理请求到HTTP服务器请求需要进行的基本转换是更改第一行:
GET http://www.gmail.com/ HTTP/1.1
to
GET / HTTP/1.1
当浏览器将请求发送给代理时,需要完整的URL,以便代理可以使与真实服务器的进一步连接。但是,对服务器的HTTP请求必须在GET
行上包含协议和主机名。
但是,这可能不是您唯一需要做的事情。HTTP代理是一个相当复杂的应用程序,由于诸如浏览器 - Proxy连接上的不同协议版本和连接选项之类的内容与代理服务器连接。
RFC 2616包含有关HTTP代理应用程序正确行为的大量信息。