2010-07-29 75 views
40

說我做一個HTTP請求到:foosite.com但端口實際上我將請求發送到是6103,我不把那口在Host頭例如:在HTTP「主機」頭參數中是否需要端口號?

GET /barpage HTTP/1.1 
Host: foosite.com 
Method: GET 

如果HTTP服務器,然後認識到,我正試圖在6103端口上談談它?或者因爲它在請求頭文件中被省略了,我是否會在服務器實際識別它的情況下賭博?

我問這個問題說:我發現瀏覽器,至少firefox + chrome,把端口int他頭Host。但是我正在使用的Java應用程序沒有。當端口沒有通過Host時,服務器迴應時認爲我在端口80上。那麼,我需要獾是誰?服務器運營商,還是Java程序員?

+4

6103是一個奇怪的HTTP端口 – NullUserException 2010-07-29 15:23:43

+0

我同意@NullUserException。 HTTP默認爲80端口,所以我會與您的Java開發人員一起確保他們在其調用中包含非標準端口。 – kbrimington 2010-07-29 15:32:24

+0

它基本上是一個房地產列表的API服務。具體RETS http://www.rets.org/documentation。爲多種上市服務提供RETS的公司傾向於給他們的子域名或端口離開他們的主域名,就像socalmls.someretscompany.com或someretscompany.com:6111。不要問我爲什麼使用端口。我只是在這裏工作;) – 2010-07-29 15:47:29

回答

46

section 14.23 of the HTTP spec其指定的端口號應,包括如果它不是80

+2

是的,我也在RFC中讀到。我可能應該注意到這一點。我希望有人能說一些知識淵博的知識,特別是知道某些Web服務器和Web應用程序框架如何對這種請求做出反應:「一些Web服務器/應用程序框架處理它,但X和Y不會」等等等等。最終,我期望接受RFC的內容,但是我可能會在放棄之前提出這個問題。 – 2010-07-29 16:28:00

+4

@superfell你的意思是必須而不應該對嗎? – Pacerier 2013-07-14 15:25:30

+0

謝謝,現在我知道這是[IE11移動中的錯誤](https://answers.microsoft.com/en-us/winphone/forum/-/-/23abc83b-c28f-4838-ac82-5b043e48d8e2)! – Eric 2014-10-01 22:55:02

4

瀏覽器(和捲曲)的默認端口將添加端口,只有當它不是標準的端口所要求的HTTP spec,並在@ superfell的answer中註明。

瀏覽器這一天(2013),實際上是strip當端口是標準端口(http端口80,https端口443)時從主機頭端口。有些客戶使用自己的方法,比如百度蜘蛛,include the port number even when the port is 80

這是否正確,我不知道。規範沒有說明當使用的端口是默認端口時是否包含端口號。

要回答您的comment,服務器將執行任何他們需要遵守的規範,規範僅建議需要的情況。因此,我覺得這不是服務器如何處理它的問題 - 它更多的是客戶端發出請求的方式:在主機頭中包含端口號。

+0

該規範清楚地表明,包括端口號(命名權限包括端口)是可以的,即端口號是* required *,除非它是服務的默認值。 – 2014-03-11 15:34:35