我目前正在研究支持保持连接的多线程代理服务器。在处理来自Firefox浏览器的请求时,我看到一些奇怪的问题。我使用localhost:10001/http://url连接到本地代理,并且可以访问此主机上的所有链接。过程如下。 1.创建一个套接字绑定到端口10001 2.接受连接,并且如果客户端连接fork() 3.继续处理客户端请求作为持久连接。HTTP代理服务器保持活动连接支持
现在的问题是,当我在Firefox中打开一个新的标签具有不同的主机访问第二URL使用本地主机:10001/http://url2,奇怪的是,该请求到达第一次连接期间创建了客户端套接字连接。我最初认为这可能是由于我的代码,但后来我试图用telnet做同样的事情,所有的新连接都会创建一个单独的进程。是否有任何具体的设置,使Firefox浏览器做到这一点?
感谢。但是我的代理需要同时为多个连接提供服务。我为一个请求使用HTTP/1.1保持活动状态,并且它仍在处理中,但现在我也想要支持一个也是持久化的新请求。是否有解决方法,我可以阻止浏览器使用现有的TCP连接并创建一个新的.. –
@Embed_Programmer:浏览器通常只会重用现有的连接,如果它是空闲的,即这个连接的请求是完成。在任何其他情况下,它将打开新的连接或等待任何现有的闲置。如果您发现浏览器发送新的请求,而您认为现有的请求没有完成,那么可能您的代码确定请求结束是错误的。也可能是浏览器使用HTTP流水线技术,它允许同时打开同一连接上的多个请求。您可以通过仅发送HTTP/1.0响应来解决此问题。 –
Thanks.You是正确的我通过URL使用代理是不正确的。我现在在浏览器中配置了代理服务器,并且一些困扰我的错误已经得到纠正。谢谢你的帮助 –