Javascript 是否存在最大HTTP状态代码消息长度?

Javascript 是否存在最大HTTP状态代码消息长度?,javascript,json,rest,http-status-codes,Javascript,Json,Rest,Http Status Codes,我正在做一个项目,我正在构建前端,其他人正在构建API。我建议所有请求都采用以下结构,以JSON格式发送: { "success": true, // true/false "message": null, // a string if success==false indicating the error "data": {} // The actual data in the response } 他们更感兴趣的是使API更加RESTful,他们建议在HTTP头中发送状态码消息

我正在做一个项目,我正在构建前端,其他人正在构建API。我建议所有请求都采用以下结构,以JSON格式发送:

{
  "success": true, // true/false
  "message": null, // a string if success==false indicating the error
  "data": {} // The actual data in the response
}
他们更感兴趣的是使API更加RESTful,他们建议在HTTP头中发送状态码消息,而不是“消息”字段,例如:

HTTP/1.1 401 Authentication Failed for john.smith@example.com. Please log in again.
前端会显示“john的身份验证失败”。smith@example.com.请重新登录。”在弹出窗口或其他地方


我担心长度限制,但我找不到任何表明没有最大长度的东西。我们是否应该确保将这些消息保持在最小长度?有没有很好的理由不这样做,而是将其作为内容(JSON或纯文本)发送回去?

进行一点测试会有很大帮助,但您应该可以这样做,事实上,测试报告特别指出:

这里列出的原因短语只是建议——它们可以被本地等价物替换,而不会影响协议


您可能唯一关心的是头大小(一些服务器可能有限制,但我认为它们都相对较大),以及一些较旧的浏览器可能对此做出的反应。坦率地说,我认为使用响应体更有意义,因为它更容易解释和清楚,但您的方法不应该有任何问题。

我想补充一点,尽管规范中可能没有限制,但正如我发现的那样,实现有可能截断状态消息,当我尝试类似Jetty 9.4.14的OP时

我花了一些时间才找到消息被截断的原因——有一个硬编码的、不可配置的1024个字符的限制[参见方法]


(由于缺乏声誉,无法将此作为评论发布)

仅供参考,上月RFC 7231至7235取代了RFC 2616。RFC 7230指定了各种元素的长度要求,尽管不是状态响应中的
原因短语
。在我使用IIS Express和Google Chrome进行的测试中,当出现过长的错误消息和/或包含换行符时,我得到了
ERR\u CONNECTION\u RESET
错误。