2013-08-06 49 views
2

我正在一個服務器上工作,我想知道什麼時候應該遵守頭文件中的保持活動?如果客戶發送沒有或有不正確授權的請求,如果在401響應發送後保持活動狀態,什麼時候兌現保持活躍

更廣泛的問題是:是否有文檔或標準顯示哪些代碼應該遵守保持活動,哪些不應該?我可以看到這500輛車並沒有兌現保持活力,但可能仍然尊重400年代的保持活力。

目前這個正在使用的邏輯:

if ((400 <= status) && (505 >= status) 
{ 
    keep-alive = false; 
} 
else 
{ 
    //Do not update keep alive leave as what client requested 
} 

謝謝!

+1

這將成爲HTTP協議的一部分,這是您通過編寫Web服務器實現的標準。 http://www.w3.org/Protocols/rfc2616/rfc2616.html –

+0

嗨,是的,我查看了標準,但它沒有提及(我可以找到)具體關於何時和何時不兌現保持時間的信息, http標頭中的活動標誌 – Jtello

+1

當您不應該保持持久連接時,沒有規範定義的實例。您不必遵守保持活躍的請求;你可以通過發送一個沒有keep-alive關鍵字的迴應來拒絕。但是,如果您打算實施保持活動狀態,則沒有理由爲任何狀態代碼設置例外。規範並沒有要求你,你的邏輯對我來說沒有意義。一個狀態的響應代碼不會告訴您可能發出的下一個請求以及響應代碼的內容。 –

回答

0

即使在HTTP/1.1中,大多數服務器都指定連接類型「Connection:close」是默認值。連接類型通常在頭部的底部指定,即使它不需要。什麼樣的HTTP代碼應該改變連接類型沒有約定。

如果是4-代碼或5-代碼,您通常會關閉連接,因爲您不希望用戶代理(瀏覽器)嘗試與服務器對接,直到用戶刷新網頁或嘗試訪問另一個。保持連接打開只會使客戶端在訪問服務器上的其他資源時稍微快一點。

很多服務器在每次請求後關閉連接。請注意,如果用戶代理在標題中指定了「Connection:close」,則無論您可以回覆,連接將始終關閉。

每當你指定關閉連接時,客戶端會希望你關閉連接,這個頭文件只是告訴Socket的結尾處你要做什麼。