HTTPQUERY
Русский

418 I'm a teapot

Применение

Сообщение об ошибке 418 I’m a teapot было придумано как одна из первоапрельских шуток IETF. В RFC говорится, что любой чайник, которого попросили сварить кофе, отвечает именно этим сообщением. В частности, получаемое тело сообщения описывается как «низенькое и пузатое».

Хотя этот код состояния не применяется в продакшене, многие HTTP-библиотеки его поддерживают. Попытка убрать этот код состояния, чтобы освободить номер для официального использования, натолкнулась на сопротивление и породила инициативу Save 418. Сообщение и код состояния сохранились.

Резервирование кода состояния

Спецификация HTTP резервирует код состояния 418 как “(Unused)”, чтобы избежать конфликтов с широко распространёнными реализациями HTCPCP.

Влияние на SEO

Поисковые системы вроде Google не станут индексировать URL с кодом состояния ответа 418 I’m a teapot. Ранее проиндексированные URL будут удалены из результатов поиска.

Пример

Клиент просит сварить кофе, но чайник возражает.

Запрос

BREW coffee HTTP/1.1
Host: example.com
Content-Type: message/coffeepot
Content-Length: 5

start

Ответ

HTTP/1.1 418 I'm a teapot
Content-Type: text/html
Content-Length: 146

<html>
  <head>
    <title>Beverage not supported</title>
  </head>
  <body>
   <p>This is a teapot. Coffee is not supported.</p>
  </body>
</html>

Как получить ответ 418

Ответ 418 возвращают только серверы, настроенные на поддержку шуточного протокола HTCPCP, либо приложения, явно возвращающие этот код. Google возвращает 418 по адресу google.com/teapot в качестве пасхалки. Многие веб-фреймворки позволяют вернуть 418, напрямую задав код состояния ответа. Ни один стандартный HTTP-сервер не возвращает 418 без умышленной настройки.

История 418

Код состояния появился в 1998 году как часть первоапрельской спецификации Hyper Text Coffee Pot Control Protocol (HTCPCP). Сопутствующая спецификация, расширяющая HTCPCP на чай, вышла в 2014 году. Когда в 2017 году IETF рассматривала возможность вернуть этот код для официального использования, сообщество разработчиков возразило и запустило движение Save 418. В итоге IETF зарезервировала код как “(Unused)” в основной спецификации HTTP.

Примеры кода

.NET

StatusCodes.Status418ImATeapot

Rust

http::StatusCode::IM_A_TEAPOT

Go

http.StatusTeapot

Symfony

Response::HTTP_I_AM_A_TEAPOT

Python3.9+

http.HTTPStatus.IM_A_TEAPOT

Angular

@angular/common/http/HttpStatusCode.ImATeapot