2010-05-25 46 views
1

好的,我一直在讀HTTP,發現this page。這是一個被張貼有一個例子HTTP請求:有效的HTTP標頭? `GET /page.html Http1.0`?

 
GET /http.html Http1.1 
Host: www.http.header.free.fr 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, 
Accept-Language: Fr 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0) 
Connection: Keep-Alive 

我試圖在Telnet和它的工作。但在其他地方我看到這種請求行

 
GET /http.html HTTP/1.1 

重要的不同之處在於HTTP全爲大寫和/字符。

它們都是正確的嗎?他們似乎都在我測試過的網站上工作。我已經瀏覽了HTTP的RFC,但沒有發現任何有用的東西。有沒有其他人看過這種請求頭?它是正式支持的嗎?

+0

如果您使用「Http1.1」表單,'lighttpd'回答「400錯誤請求」。 – sth 2010-05-25 01:04:58

+0

@sth Apache 1.x和2.x和IIS都接受它.. – Earlz 2010-05-25 01:13:19

回答

3

參照HTTP protocol,它必須在HTTP/1.1HTTP/1.0(較舊的一個)。現在它取決於http服務器的開發方式。它可以接受它,但你不應該依賴它。

編輯:

HTTP-版本= 「HTTP」, 「/」 1個* DIGIT 「」。 1 * DIGIT

而現在的協議是1.1,所以你應該使用:GET /http.html HTTP/1.1

0

應該

GET /http.html HTTP/1.1 
1

根據RFC2145(第3頁),

RFC791 [4]定義了3.2節中的「魯棒性原則」:

一個實現的發送行爲必須是保守的,並且接收行爲是自由的。

該原理也適用於HTTP。這是解釋HTTP規範的任何部分可能仍然不明確的基本依據。特別是,HTTP的實現不應該拒絕消息或不必要地產生錯誤。

,特別是:

是,而且一直,一個實現接收郵件頭,它不明白必須忽略掉這個頭中的HTTP規範的明確意圖。

那麼服務器忽略的情況下的版本號,它是「HTTP1.1」(這是無效),並推測它的解釋消息作爲HTTP/1.0消息(或者甚至HTTP/0.9! )。當然,你不應該依賴這種行爲!