Are there languages/software that implements http

2020-05-31 05:14发布

问题:

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);

回答1:

Google does it.

Try clicking on the teapot, or tilting your mobile device.

www.google.com/teapot



回答2:

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)



回答3:

Yes, it is implemented (by a teapot).

This error code is an impotent part of HTCPCP(Hyper Text Coffee Pot Control Protocol).



回答4:

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.



回答5:

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.



回答6:

Go lang's net/http package codifies HTTP 418 Status as a constant: StatusTeapot.



回答7:

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.