2

我想实现 HTTP 代理服务器,以更深入地了解协议的一些细节,并在此过程中学习一些套接字编程,但我不想实现一个成熟的 HTTP 服务器。如果我只想实现代理,我应该关注哪些相关的 RFC 页面和这些页面中的部分?

该计划是从常规 HTTP 代理开始,然后可能将其扩展到 HTTPS 代理。

4

3 回答 3

3

我会看看HTTP 1.0 (RFC 1945)HTTP 1.1 (RFC 2616)。你也可以看看:

您可以通过 Google 找到很多示例代码!

于 2012-06-04T06:23:20.997 回答
3

我目前也在努力。基本实现很简单。侦听套接字端口,找到主机,连接到远程服务器,发送 http 头,从服务器接收,然后发送回客户端。困难的部分是一致的连接和流水线。

至于 HTTPs,它的 header 是这样的:

CONNECT addons.mozilla.org:443 HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0
Host: addons.mozilla.org

代理应该连接到服务器,然后向客户端回复 200 消息,然后作为重定向器来回重定向。

检查这个:https ://datatracker.ietf.org/doc/html/draft-luotonen-ssl-tunneling-03

于 2013-01-12T03:55:02.297 回答
2

您可能还会发现 IETF 中 HTTPbis 小组的工作很有帮助;我们正在重新编写规范,以使它们更加清晰和易于实施。

有关详细信息,请参阅 http://trac.tools.ietf.org/wg/httpbis/trac/wiki

于 2012-06-08T01:40:39.087 回答