2013-10-22 22 views
2

如果HTTP 1.X協議中有任何標準方法告訴服務器在啓動爲200 OK的http響應期間存在問題,那麼我很氣憤。如何判斷響應過程中服務器出現問題,以200 OK開始。優雅地失敗

如何判斷服務器上是否有錯誤,如果200 OK頭已經返回並且我們正在發送響應體?以一些標準優秀的方式。

UPD:有一個重複,但沒有一個單一的答案(!)HTTP: error during reply after 200 OK status code

具體地說:我不能使用Content-Length在響應端檢查,這是因爲長度不能被在響應開始公知的。

另外,我無法在發送之前在服務器上緩存整個響應(因爲它太大而且內存不足,而且生成時間太長,所以用戶無法等待等等。 )。

+0

定義「錯誤」。 –

+0

@SergioTulentsev我假設OP意味着「服務器無法(繼續)向客戶端發送正確答案的任何情況」。一個極端的例子可能是服務器端的電力損失。 –

+0

@SergioTulentsev我不想發明一些「魔法字節序列」,然後轉義服務器上的響應主體並在客戶端上取消它,除非沒有更好的解決方案 – Dan

回答

3

有沒有標準的方法來做你想要的。

準確地說,標準方法是緩存服務器上的響應,然後發送200 OK和Content-Length,然後發送內容。如上所述,這不適合你。

我能想到的唯一選擇是以某種格式包裝內容,使其可發現,無論它是否正確發送。例如,您可能會使用散列或數字簽名來結束它。但顯然,這些機制不是HTTP標準的一部分。