从HTTP代理服务器重建请求标题到C中的远程服务器



我需要开发HTTP代理服务器。我的代理服务器能够从Web Brownser检索HTTP请求。我还可以连接到服务器。我无法理解如何进一步发展:它如何将请求从代理服务器发送到远程服务器。
我有以下查询:

  1. 请求标题的格式将从HTTP代理服务器发送到远程服务器
  2. 是我从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代理应用程序正确行为的大量信息。

最新更新