2011-07-05 33 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

相關問題