【问题标题】:Defining custom status codes (and messages!) in Rack [duplicate]在 Rack 中定义自定义状态代码(和消息!)[重复]
【发布时间】:2014-07-26 11:09:56
【问题描述】:

RFC 2616 section 6.1.1 指定“HTTP 状态码是可扩展的”:

HTTP 状态码是可扩展的。不需要 HTTP 应用程序 了解所有注册状态代码的含义,尽管这样 理解显然是可取的。

一个常见的例子是 Twitter 的420 Enhance Your Calm

我想在 Rack 应用程序中使用自定义代码进行响应。我能够以超级简单的方式使用自定义代码:

app = proc do |env|
  ['299', {}, ['Hey there custom status codes!']]
end

run app

服务器正确响应:

HTTP/1.1 299
Connection: Keep-Alive
...

我想做的是定义自定义代码相关的自定义消息。 我搜索了 Rack 文档并在 Google 上搜索了一段时间,但没有得出任何结论性的答案。

【问题讨论】:

  • @matt 当然,这正是我要搜索的内容。虽然我不搜索 Sinatra =/。对不起,谢谢!

标签: ruby http rack


【解决方案1】:

(1) 不要使用自定义状态码,除非是为了实际记录和注册它们。

(2) 状态消息仅用于调试,您不能依赖它不被中介或软件库破坏。此外,它已在 HTTP/2 中消失。

(3) 如果您需要在回复中提供更多信息,请考虑将其放入邮件正文中。

(4) 有关详细信息,请参阅 RFC 7231,而不是 RFC 2616。

【讨论】:

  • 谢谢。对于(1),我正在写一篇大学研究论文,因此仅用于演示目的。我知道(2)出于同样的原因。我不需要用它来实现任何东西(3)。无论如何,我认为 RFC 7231 仍然是一个提议的标准,因为它是最近的(2014 年 6 月);这是要走的标准吗?
  • RFC 7231 是当前 HTTP/1.1 标准的(一部分)。 RFC 2616 已过时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-08
  • 2017-05-09
  • 1970-01-01
相关资源
最近更新 更多