2016-11-04 111 views
0

我想使用HTTP狀態碼通知客戶端特定的錯誤情況。可以重新使用416狀態碼的HTTP狀態碼嗎?

離我最近的是「416 Range Not Satisfiable」 - 雖然服務與從文件服務字節範圍無關。

我可以自由地解釋「Range Not Satisfiable」的含義嗎?還是我必須尊重涉及文件字節範圍的技術定義?

+0

更好地使用通用「錯誤請求」狀態碼,並在響應正文(或錯誤消息行)中包含詳細信息。 – Thilo

回答

1

可以自由解釋。但是,這並不是正確的做法。

當前不具體處理的錯誤4xx集通常使用更通用的400錯誤以及爲什麼添加說明。一般規則是,如果您的錯誤與更具體的代碼完全匹配,請使用它,否則使用不太具體的代碼。

重載特定代碼的含義可能會導致質量混淆。

RFC7231, section 6.5(我的斜體字):

的4XX(客戶端錯誤)類的狀態代碼表示客戶端似乎出現了偏差。除了響應HEAD請求之外,服務器應該發送一個包含錯誤情況說明的表示,以及它是臨時還是永久狀態。這些狀態碼適用於任何請求方法。用戶代理應該向用戶顯示任何包含的表示。

+0

問題是,如果你有一系列的代理,api網關等,很多人可能/會因爲其他原因返回400個不同表示的代碼。我想使用一個狀態代碼,可以毫不含糊地假定來自我的服務的某個給定的URL,以便客戶更輕鬆地解釋響應。 – aaa90210

+1

@ aaa90210,那麼我建議你加入IETF並說服他們爲aaa90210添加'499特定代碼,以最大限度地減少他們的編碼工作狀態代碼:-)其他任何東西都會違反標準,就像很多其他小丑之前所做的那樣(https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)。在響應主體中插入*非常*特定的消息應該是一件簡單的事情,可以通過代碼或用戶輕鬆解釋(例如「ERR314159 - 不允許窺探」)。 – paxdiablo

+0

借調。是網絡。請參閱RFC 7233. – VoiceOfUnreason