为什么HTTP代理在GET请求中需要绝对URI?

为什么HTTP代理在GET请求中需要绝对URI?,http,Http,我在HTTP规范(第5.1.2节)中注意到,对HTTP代理的HTTP请求使用绝对URI: GET http://stackoverflow.com/questions/1968887/uribuilder-and-in-uri HTTP/1.1 当非代理请求使用相对URI时: GET /relative_path.html HTTP/1.1 在任何一种情况下,都会指定一个“主机:”头。既然“Host:”头已经指定了请求的目标,为什么HTTP代理需要绝对URI?规范提到了避免请求循环,但我不确

我在HTTP规范(第5.1.2节)中注意到,对HTTP代理的HTTP请求使用绝对URI:

GET http://stackoverflow.com/questions/1968887/uribuilder-and-in-uri HTTP/1.1
当非代理请求使用相对URI时:

GET /relative_path.html HTTP/1.1
在任何一种情况下,都会指定一个“主机:”头。既然“Host:”头已经指定了请求的目标,为什么HTTP代理需要绝对URI?规范提到了避免请求循环,但我不确定这与我的问题有什么关系

我已经检查了一个网络监视器,并验证了至少在我的系统上,请求的行为确实与上面描述的一样。

我怀疑是因为“主机”头只出现在HTTP 1.1中(我想)。在此之前,这条路是唯一的。这对于代理来说是不够的,因此必须将主机添加到主体中才能工作


我想HTTP 1.1有点多余,但它现在是为了向后兼容而存在的。

谢谢,我希望就是这样。我的开发人员建议解决他们的一个问题,就是在URI和“主机:”头中放置不同的服务器名称值。(没有涉及HTTP代理。)如果有什么原因不起作用,我很想知道。规范说如果存在绝对URI,应该忽略主机头。。。所以我建议他们应该匹配。