2010-08-29 61 views
1

我有一個實現HTTP 1.1協議的自定義HTTP服務器。我從來沒有收到IE的'Connection:Close'(我還沒有測試過其他瀏覽器)。相反,'receive'超時,因爲它似乎IE關閉了連接。未通過IE發送的HTTP頭「連接:關閉」

我應該尋找什麼標題來優雅地關閉連接?

+0

連接:close表示客戶端不打算爲後續請求重用連接。你不應該期望收到這個頭。如果您不想允許保持活動狀態,那麼只需在響應頭文件中發送Connection:close,然後在返回響應主體後關閉連接。 – EricLaw 2010-08-30 03:56:47

回答

1

當標題不存在時,1.1中「連接」標題的默認設置爲「保持活動」。 IE不立即關閉連接,因此它可以爲後續請求使用相同的連接,如果您沒有立即發送任何請求,則會在超時後關閉連接。

+0

那麼,我應該發送'100 - 繼續'還是讓連接超時? – 2010-08-29 15:01:15

+0

如果客戶端通過'Expect:100-continue'頭部明確要求,那麼只能發送一個'100'回覆,並且即使只是在回覆待處理的請求。所以你只需要讓你的連接正常超時。就像我所說的,即使IE不能立即知道連接是否會被重用,所以它不會發送HTTP 1.1請求的Connection:close頭 – 2010-08-31 01:13:10

0

沒有要求瀏覽器明確發送連接:關閉。它在60秒內超時,這在註冊表中定義。

我沒有看到一個問題,以優雅地處理「手動」客戶端斷開連接。

+1

這不是說它是一個問題,而是你說的。如果能夠優雅地完成,那將會很好。如果這是不可能的,那麼我想這不是問題;) – 2010-08-29 02:49:19

+0

那麼,即使瀏覽器總是發送這個,你仍然需要處理好連接情況下的情況。 – BarsMonster 2010-08-29 03:25:20