2

我需要开发一个 HTTP 代理服务器。我的代理服务器能够从网络浏览器中检索 HTTP 请求。而且我还能够连接到服务器。我无法理解如何进一步:它如何将请求从代理服务器发送到远程服务器。
我有以下查询:

  1. 从 HTTP 代理服务器发送到远程服务器的请求头格式
  2. 它与我从网络浏览器中收到的 GET、HEAD 和 POST 方法的标题相同吗?

我尝试发送整个标题:
GET http://www.gmail.com/HTTP/1.1 Accept
: text/html, application/xhtml+xml, /
Accept-Language: en-US
User-Agent: Mozilla/5.0 (兼容;MSIE 9.0;Windows NT 6.1;WOW64;Trident/5.0)
接受编码:gzip,放气
代理连接:保持活动
主机:www.gmail.com

或:GET / HTTP/1.1
主机:www.gmail.com:80

4

1 回答 1

2

您需要从代理请求到 HTTP 服务器请求的基本转换是更改第一行:

GET http://www.gmail.com/ HTTP/1.1

GET / HTTP/1.1

浏览器向代理发送请求时需要完整的 URL,以便代理可以进一步连接到真实服务器。但是,对服务器的 HTTP 请求不得在行中包含协议和主机名部分GET

但是,这可能不是您唯一需要做的事情。HTTP 代理是一个相当复杂的应用程序,因为浏览器代理连接与代理服务器连接上的协议版本号和连接选项不同。

RFC 2616包含大量有关 HTTP 代理应用程序正确行为的信息。

于 2012-10-31T02:53:21.153 回答