如果我正在製作HTTP服務器,我可以選擇忽略我不想回復的請求並讓它們超時嗎?實現HTTP服務器 - 是否必須響應所有請求?
我只是想知道我是否在任何意義上最好不要響應來自潛在的惡意源的請求不是響應他們的數據,我寧願不服務了,或者用一些403 Forbidden
或類似的反應,讓他們響應知道我存在。
如果我正在製作HTTP服務器,我可以選擇忽略我不想回復的請求並讓它們超時嗎?實現HTTP服務器 - 是否必須響應所有請求?
我只是想知道我是否在任何意義上最好不要響應來自潛在的惡意源的請求不是響應他們的數據,我寧願不服務了,或者用一些403 Forbidden
或類似的反應,讓他們響應知道我存在。
A 403
應該就足夠了。但我不會讓它超時。如果有人試圖變得厚顏無恥,超時會比Service Unavailable 503
更具信息量。
我回答了一個相關問題,閱讀問題/答案,它是關於特定用例,但它確實提到了您不想返回HTTP狀態代碼的情況,因爲它提供了太多信息。
RFC - 404 or 400 for relation of entity not found in PUT request
也有看看這個list of HTTP Status codes,你總是可以使用類似Too Many Requests 429
,一個Not Acceptable 406
甚至像I'm a teapot 418
;)
如何超時並且沒有任何響應比響應更具信息性?當然,如果你得到任何迴應,它會告訴你有什麼,但如果你沒有迴應......你不能推斷任何東西,你能嗎? – omatai
如果你嘗試擊中一個不存在的端點,它將返回'無法到達服務器',如果你試圖達到一個未實現的路線,你會得到一個'404未找到' - 取決於你如何設置建立你的API。 如果你只是讓它超時,它會告訴你某些事情正在處理中,或者有些事情是不正確的。所以如果我只是想讓你的服務器很忙,這是讓我知道我正在碰到存在的東西的一種方式。無論如何,這是我的意見。 – MrHaze
爲了節約資源,儘快提前並結束請求也是對你有益的。根據您的堆棧,當您處理越來越多的負載時,您可能會減慢其他請求。 – MrHaze
你有沒有考慮使用像[libonion]一些HTTP服務器庫( https://www.coralbits.com/libonion/)?這對你來說可能會更簡單(並且可以處理所有的HTTP) –