418“我是茶壶”真的是HTTP响应代码吗?


Answers:


120

我使用此代码。我对两个单独的HTTP服务器有nginx反向代理请求。一种处理对未经身份验证的用户的请求,第二种处理对经过身份验证的用户的请求。在这种特定情况下,问题在于第一台服务器是确定用户是否通过身份验证的服务器。请不要问为什么。

因此,如果第一台服务器确定用户已通过身份验证,它将做出响应418 I'm a teapot。然后,NGINX在内部将流量重新路由到第二台服务器。就浏览器而言,这只是一个请求。

这是本着HTCPCP代码418的精神,因为如果您尝试用茶壶BREW,则适当的响应是“我不是那种可以处理该请求的东西,但是可能还有其他事情。” 换句话说,“我是茶壶。找到咖啡壶。” (第二台服务器是咖啡机)。

最终,虽然418在RFC 7231中未明确定义,但仍被的保护层覆盖4xx (Client Error)

6.响应状态码

  • 4xx(客户端错误):请求包含错误的语法或无法满足

6.5。客户端错误4xx

  • 状态代码的4xx(客户端错误)类表明客户端似乎已出错。除响应HEAD请求外,服务器应发送一个包含错误情况说明以及它是暂时还是永久的说明。这些状态代码适用于任何请求方法。用户代理应该向用户显示任何包含的表示。

2
我有一个第三方提供商(一个非常糟糕的提供商),如果您缺少Accept标头,他会回答418。我一直以为是因为它们很糟糕,但这实际上可以解释发生了什么。不过,仍然不能原谅他们将状态代码从服务器中泄漏出去
Hoffmann

7
@Hoffmann对于他们来说,响应400错误请求或415不支持的媒体类型可能是适当的,任何4xx代码都表示客户端错误,因此可以这样解释。
wizulus

1
此状态代码已添加到httpPython 3.9的标准库模块中。
BramAppel

60

HTTP响应代码418最初是在RFC 2324(“超文本咖啡壶控制协议(HTCPCP / 1.0)”)和RFC 7168(“用于茶叶外排设备的超文本咖啡壶控制协议(HTCPCP-TEA)”)中定义的。

每个维基百科:HTTP状态代码列表:#418

该代码在1998年被定义为RFC 2324超文本咖啡壶控制协议)中传统的IETF愚人节笑话之一,并且预计不会由实际的HTTP服务器实现。RFC指定此代码应由请求冲泡咖啡的茶壶返回。此HTTP状态在某些网站(包括Google.com)中用作复活节彩蛋


10
值得一说的是,这不是真实的状态代码。官方列表在这里:iana.org/assignments/http-status-codes/…–
Evert

@Evert是什么影响RFC中的某些内容是否变为“官方”的?您能否将您的评论写成答案,以便我接受?
Mohan

@Mohan我不太想尝试将IETF和标准化过程写成一小段评论,因为我可能会误会。最终,我认为这取决于相关的IETF工作组。
埃弗特

在构建Web应用程序时,我将其用作占位符或“待办事项”。与虚构的电话号码com.org.uk/phones-telecoms-and-internet/类似的想法……我可以肯定,它永远不会被认真使用。
克里斯·黄·利弗

14

在此处输入图片说明

是的,我可以确认,我已经看到HTTP 418从真实的生产服务器返回。它确实存在。


5
WebException类将显示请求中返回的任何响应代码和状态文本。如果响应头的第一行是“ 432一个零”,则消息将是“远程服务器返回错误:(432)一个零”。了解发生此错误时正在调用的服务器以及正在运行的软件,可能会更有用。
wizulus

6

是的,它是“真实的”代码,因为它实际上是由Internet工程任务组作为正式RFC发布的,但是该RFC是4月1日发布的,这是愚人节的玩笑(与其余的Hyper Text Coffee Pot Control一起)协议),而非合法实施。这就是为什么大多数网站都将其用作复活节彩蛋,但要避免使用它的原因。正如此评论所指出的,通常会有更合适的状态,例如400(错误请求)。话虽这么说,多亏了IT社区,它现在是保留的代码,所以不要指望它会很快出现在任何地方。

值得注意的是,根据Larry Masinter(由Wikipedia声称该RFC的作者)所说,所讨论的HTTP扩展确实确实具有(讽刺的)目的:“它标识了不当扩展HTTP的许多方式。”


1

我认为将418视为保留的代码较为安全,该代码曾经有一半-官方含义,但现在正式“未分配”。

我认为,从历史上看,现在对这些代码的想法有所不同。今天,这听起来毫无意义和可笑。可能不是吗?

换句话说,我将避免使用此代码。


“可能不是”不,实际上,这几乎只是愚人节的笑话。人们不注意RFC何时发布是4月的哪一天,但可能会认为这是一件严肃的事情!
扭曲代码
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.