我想实现和HTTP代理服务器,以更深入地了解协议的一些细节,并沿途学习一些套接字编程,但我不想实现一个完整的HTTP服务器。如果我只想实现一个代理,那么我应该关注的那些页面中的相关RFC页面和部分是什么?
计划是从常规HTTP代理开始,然后可能将其扩展到HTTPS代理。
答案 0 :(得分:3)
我会看一下HTTP 1.0 (RFC 1945)和HTTP 1.1 (RFC 2616)。您还可以查看:
您可以在Google上找到很多示例代码!
答案 1 :(得分:3)
我目前正在研究它。基本实现很简单。在套接字端口上侦听,找到主机,连接到远程服务器,从服务器发送http标头,recv,然后发送回客户端。困难的部分是一致的连接和流水线。
对于HTTPs,其标题如下:
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消息,然后作为重定向器来回重定向。
请检查:http://tools.ietf.org/html/draft-luotonen-ssl-tunneling-03
答案 2 :(得分:2)
您可能还会发现IETF中HTTPbis组的工作很有帮助;我们正在重新编写规范,以使它们更清晰,更容易实现。
请参阅 http://trac.tools.ietf.org/wg/httpbis/trac/wiki 了解更多信息。