在Rack中定义自定义状态代码(和消息!)

时间:2014-07-26 11:09:56

标签: ruby http rack

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搜索了一段时间,但没有得出任何结论性答案。

1 个答案:

答案 0 :(得分:3)

(1)除非意图实际记录和注册,否则不要使用自定义状态代码。

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

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

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