2016-11-04 112 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