Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
I'm a teapot (nytimes.com)
142 points by donohoe on Jan 25, 2012 | hide | past | favorite | 29 comments


Bah... 200...

  $ curl -I http://www.nytimes.com/418
  HTTP/1.1 200 OK
  Server: Sun-ONE-Web-Server/6.1
  Date: Wed, 25 Jan 2012 21:28:58 GMT
  Content-length: 17
  Content-type: text/plain
  Set-cookie: RMID=2dab5fc96b364f20741aba0c; expires=Thursday, 24-Jan-2013 21:28:58 GMT; path=/; domain=.nytimes.com
  Last-modified: Fri, 29 Apr 2011 19:40:57 GMT
  Etag: "11-4dbb1449"
  Accept-ranges: bytes


I'm betting that's their CDN swallowing the nonstandard (even though its on spec) http code.

Varnish does the same thing, which is why you can't get a 418 code out of httpstat.us/418, which is on heroku. Same goes for that cat-based one that came up the other week, which is also on heroku.


Works for me...

  > curl -i 'httpstat.us/418'
  HTTP/1.1 418 Unknown Error
  Server: nginx
  Date: Wed, 25 Jan 2012 23:58:13 GMT
  Content-Type: text/plain
  Connection: keep-alive
  Access-Control-Allow-Origin: *
  Content-Length: 16
  X-Varnish: 1346742606
  Age: 0
  Via: 1.1 varnish

  418 I'm a Teapot
although it shows as 'Unknown Error' instead of 'I'm a Teapot'


Is it on spec? Somehow I doubt there's an actual teapot involved anywhere in responding to that request.


HTTP status 418 is an "official" status code released in the traditional yearly April Fool's Day paper[1] of the Internet Engineering Task Force. It was the joke for 1998.

[1]http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_P...


True, but the spec clearly states that the 418 code is to be used only when "the HTCPCP server is a teapot; the resulting entity may be short and stout."


How does Varnish know the backend server is not a teapot? It's a blatant violation of the standard to strip it out.


Just to add, while HTTP 418 is an April Fools joke, I had a semi-legitimate usage case for this at one point with http://drostie.org/ .

The idea was that I might have domains configured on my DNS which resolved to the same machine. And if you connect to that machine on port 80, no matter what domain, you will get the HTTP server.

The problem is, the DNS might recognize domains which the HTTP server is not listening for, e.g. "mail.drostie.org" or some such. When you visit those in a web browser, the server can't do what it's supposed to do -- pretend it's not listening on port 80 -- because it already received the HELO and the GET.

It's also clearly a client error, so the error code should be in the 4xx range. But just go down the list: it's not a syntax error (400), it wasn't unauthorized (401), payment isn't required (402), and the server technically didn't even understand the request, so it's not 'I understand but I refuse to fulfill' (which is 403). It's not that some file was not found (404) or that GET is not allowed (405) or that we couldn't fit the Accept HTTP header (406).

The real problem is that you asked mail.drostie.org to do something other than handle mail. None of the 4xx status codes really fits, and the one that comes closest is... 418. You asked me to brew coffee, but I'm a teapot.


Not a bad idea :). What I tend to do is make my default vhost show a page which explains what the server is and points the user to a more useful domain.


you can get one here: http://httpbin.org/status/418


It's a reference to an April Fools joke from 1998: http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_P...


In the spirit of more fun, http://medlem.spray.se/erur/418.htm



Headers:

    HTTP/1.1 418 I'm a teapot
    Date: Wed, 25 Jan 2012 23:57:22 GMT
    Server: Apache
    X-Webapp: cbeebieshome
    X-Generated: Wed, 25 Jan 2012 23:57:22 +0000
    Cache-Control: max-age=60
    Content-Type: text/html; charset=utf-8
    Content-Length: 20820
    X-Cache-Action: PASS (status)
    X-Cache-Age: 0


Unfortunately, it's a lie. Obviously this is a web server and not a teapot.


Technically most web servers are teapots, just incredibly bad ones.


Old Prescott Pentium D CPUs might actually make decent teapots. Those things were hawt.


It could be running on NetBSD... If it runs on toasters, teapots are the next logical step.


Google AppEngine doesn't seem to allow the 418 response code. Failed expectations at the best: http://geekceo.com/418


Has anyone designed a teapot to functionally implement this protocol?


http://www.cs.rhul.ac.uk/home/joseph/teapot.html

The page claims that http://134.219.188.123/ is the device in the picture. Since we may be about to hammer it:

    jerf@jerfhom ~ $ curl -i http://134.219.188.123/
    HTTP/1.0 418 I am a Teapot
    Server: BaseHTTP/0.3 Python/2.4.4
    Date: Thu, 26 Jan 2012 01:38:15 GMT
    Content-Type: text/html
    Connection: close

    <head>
    <title>Error response</title>
    </head>
    <body>
    <h1>Error response</h1>
    <p>Error code 418.
    <p>Message: I am a Teapot.
    <p>Error code explanation: 418 = ???.
    </body>


Unfortunately, it doesn't support either BREW or WHEN requests. No coffee for me.

  tillberg:~ dan$ curl -i -X BREW http://134.219.188.123/
  HTTP/1.0 501 Unsupported method ('BREW')
  Server: BaseHTTP/0.3 Python/2.4.4
  Date: Thu, 26 Jan 2012 05:02:36 GMT
  Content-Type: text/html
  Connection: close
  
  <head>
  <title>Error response</title>
  </head>
  <body>
  <h1>Error response</h1>
  <p>Error code 501.
  <p>Message: Unsupported method ('BREW').
  <p>Error code explanation: 501 = Server does not support this operation.
  </body>


Lovely!

Perhaps the next implementation should use Raspberry Pi instead of a laptop.



I did a university assignment on the HTCPCP. My tutor thought it would be hilarious to get us to create a coffee pot server which was based on RFC 2324


How did anyone find this? (It's not in robots.txt, fyi)


It's from an April fools joke from 1998 regarding the "Hyper Text Coffee Pot Control Protocol"

http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_P...


You misunderstand - my Q is how did anyone find NYTime's implementation of this joke spec?


From the excellent HTTP Status Cats:

http://httpcats.herokuapp.com/418




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: