I know that status code 418 was defined as a April Fools' joke, and "is not expected to be implemented by actual HTTP servers" as is stated on Wikipedia.
But I would be interested if any of you knew of a language/webserver/IDE that supports it.
I was trying on Apache (via php), and obviously it got me an internal error (500). I just like the humor behind it (am not trying to troll here) and would like to know if more than just Emacs implements this.
More precisely: It could be emulated in php for example by doing something like ...
header("HTTP/1.1 418 Whatever text I'd like");
... but do any of you know any actual server software, or language in particular, that implements it natively, where something like the following would not throw a 500, but actually work:
http_response_code(418);
Google does it.
Try clicking on the teapot, or tilting your mobile device.
www.google.com/teapot
Websites that have implemented it
- Google - www.google.com/teapot - (Details from @ButtleButkus)
- Stackoverflow on CSRF violations - Meta question about it - (Details from @ImmortalBlue)
- A teapot - joereddington.com/projects/418.. - (Details from @MegaTom)
- Snarked - www.snarked.org/coffee - (Details from @MR.X)
Languages that support it natively
Node.js
res.send(418)
Sends following HTTP header:
HTTP/1.1 418 I'm a teapot
Date: Wed, 25 Feb 2015 07:08:27 GMT
Connection: keep-alive
Transfer-Encoding: chunked
The actual node.js code used to get this response was:
require('http').createServer(function(q,s) {
s.writeHead(418);
s.end();
}).listen(80);
Golang
http.Error(w, http.StatusText(418), 418)
Python
Within native libraries, starting from Python 3.9 (Details @Ross)
Yes, it is implemented (by a teapot).
This error code is an impotent part of HTCPCP(Hyper Text Coffee Pot Control Protocol).
Python 3.9 will support HTTP 418 from its next (fifth) alpha release. I opened a pull request for this to be supported which was merged last weekend.
Stack overflow implements it:
https://meta.stackexchange.com/questions/185426/stack-overflow-returning-http-error-code-418-im-a-teapot
albeit, a little creative, when dealing with CSRF violations.
Go lang's net/http
package codifies HTTP 418 Status as a constant: StatusTeapot
.
My server, www.snarked.org, does it if the pathname begins "/coffee" or "/pot-" followed by a digit, or methods BREW or WHEN, or a scheme equating to "coffee:" (actually, the regex pattern "^[CK][AO]FF?[EIO]E?$" which covers most western-European languages). After 60 seconds, it rolls over to Google's top hit for teapots.