2011-01-25 57 views
18

我們在Web上的互操作性方面經常遇到一些問題。瀏覽器供應商面臨的其中一個問題是錯誤拼寫Connection HTTP標頭。最常見的錯誤是由這兩種形式給出的。Cneonction和nnCoection HTTP標頭

nnCoection: 
Cneonction: 

有一直對這個幾篇文章,其中包括Fun with HTTP headers。通常它是按時間發生的,然後消失。看起來它們中的一些是由負載平衡器創建的,如this example:NetScaler Appliance。

你知道任何其他硬件或軟件實例造成這些問題嗎?

更新這裏是一個例子,其中一個網站沒有發回好的Connection HTTP標頭。

curl -sI ehg-nokiafin.hitbox.com 
HTTP/1.1 200 OK 
Date: Tue, 25 Jan 2011 20:35:45 GMT 
Server: Hitbox Gateway 9.3.6-rc1 
P3P: policyref="/w3c/p3p.xml", CP="NOI DSP LAW NID PSA ADM OUR IND NAV COM" 
Cneonction: close 
Pragma: no-cache 
Cache-Control: max-age=0, private, proxy-revalidate 
Expires: Tue, 25 Jan 2011 20:35:46 GMT 
Content-Type: text/plain 
Content-Length: 23 

更新2011-01-26

在論壇亞馬遜AWS左右,有一個threadnnCoection。註釋說:

僅供參考,它拼錯字 連接是使互聯網 校驗和(一個簡單的總和)仍然增加了 起來的原因,這樣的變化可能發生在 數據包級別。如果完全刪除頭文件 ,它將不得不 失速轉發響應,直到 頭完全被讀取,因此它可以重寫頭,重新計算校驗和,然後發送它。

sum(ord(c) for c in "Connection") 

sum(ord(c) for c in "nnCoection") 

都給出1040

回答

9

你確定這是一個實際的問題?鏈接的文章表明,這些頭文件「有目的地拼寫錯誤」,以便負載均衡器,反向代理或其他中間件可以打敗服務器希望連接保持活動狀態,而不必跟蹤TCP流中位置的增量連接的生命。像這樣的事情實際上可能需要通過強制保持與其他服務器的連接遷移到聯機服務器來恢復已關閉和恢復的服務器。

如果您的協議依賴於HTTP Connection: keep-alive的功能(cough),則可能是錯誤的。

+0

在負載均衡器的情況下,還有第二個連接頭。但有很多情況下沒有其他東西被髮送。我將編輯帖子舉例說明。 – karlcow 2011-01-25 21:30:36