2011-07-05 34 views
3

我在HTTP规范注意到(5.1.2节),该HTTP请求到代理HTTP使用绝对URI:为什么HTTP代理在GET请求中需要绝对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?规范说了一些关于避免请求循环的问题,但我完全不确定这与我的问题有什么关系。

我检查了一个网络监视器,并验证至少在我的系统上,请求的行为如上所述。

回答

1

我怀疑是因为“主机”头只出现在HTTP 1.1(我认为)。在此之前,这条路就是一切。这对于代理来说还不够,所以主机必须被添加到主体才能工作。

我认为它对于HTTP 1.1来说有点多余,但它现在是为了向后兼容。

+1

谢谢,我希望就是这样。我的开发人员建议解决他们的问题之一是将不同的服务器名称值放入URI和“Host:”标题中。 (不涉及HTTP代理。)如果有某些原因不起作用,我很想知道它。 – Bruce

+0

规范说,如果绝对URI存在,Host标头应该被忽略...所以我建议他们应该匹配。 – ebullient

相关问题