HTCPCP: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м Добавил гиперссылку на Spring
м Орфография, пунктуация (Тире после личного местоимения и неправильная транслитерация немецкого "st" в имени)
(не показано 8 промежуточных версий 7 участников)
Строка 5: Строка 5:


HTCPCP является расширением [[HTTP]]. Запросы HTCPCP определяются с помощью схемы [[URI]] <code>coffee:</code> и содержат несколько добавлений к HTTP-запросам:
HTCPCP является расширением [[HTTP]]. Запросы HTCPCP определяются с помощью схемы [[URI]] <code>coffee:</code> и содержат несколько добавлений к HTTP-запросам:
* <code>BREW</code> или <code>POST</code>: Заставляет сервер HTCPCP подавать кофе. Использование POST для этой цели не рекомендуется. Предлагается новое поле заголовка HTTP-запроса «Accept-Additions», поддерживающее дополнительные ингредиенты, включая сливки, цельное молоко, ваниль, малину, виски и т. д.
* <code>BREW</code> или <code>POST</code>: заставляет HTCPCP-[[Сервер (приложение)|сервер]] заваривать кофе.
* <code>GET</code>: получение кофе от HTCPCP-сервера.
* <code>GET</code>: «получает» кофе от HTCPCP-сервера.
* <code>PROPFIND</code>: поиск [[Метаданные|метаданных]] о кофе.
* <code>PROPFIND</code>: возвращает [[метаданные]] о кофе.
* <code>WHEN</code>: Сказав «when», клиент заставляет HTCPCP-сервер завершить добавление [[молоко|молока]] в кофе (если это возможно).
* <code>WHEN</code>: Заставляет HTCPCP-сервер завершить добавление [[молоко|молока]] в кофе (если это возможно).


Также сервер может возвращать ошибки. Ниже представлены их коды:
Также сервер может возвращать ошибки. Ниже представлены их коды:
* 406 «Not Acceptable» (Ошибка 406: Не приемлемо) — возвращается при ситуации, когда сервер не в состоянии выполнить запрос клиента; ответ сервера при этом должен содержать также перечень видов кофе, доступных для приготовления.
* 406 «Not Acceptable» (Ошибка 406: Не приемлемо) — возвращается при ситуации, когда сервер не в состоянии выполнить запрос клиента; ответ сервера при этом должен содержать также перечень видов кофе, доступных для приготовления.
* 418 «I’m a teapot» (Ошибка 418: Я чайник) — возвращается при попытке приготовить кофе с помощью [[заварной чайник|чайника]].
* 418 «I’m a teapot» (Ошибка 418: Я чайник) — возвращается при попытке приготовить кофе с помощью [[заварной чайник|чайника]].


Как было [https://bugzilla.mozilla.org/show_bug.cgi?id=46647#c16 отмечено Стефаном Мёбиусом], предложенная спецификация протокола HTCPCP имеет тот недостаток, что не предусматривает кода ошибки «Out of Coffee» для случая, когда кофе в кофеварке закончился. [https://bugzilla.mozilla.org/show_bug.cgi?id=46647#c9 Обсуждались] возможности расширения спецификации протокола для случаев других напитков: [[чай|чая]], [[пиво|пива]], [[молоко|молока]] и т. п.
Как было [https://bugzilla.mozilla.org/show_bug.cgi?id=46647#c16 отмечено Штефаном Мёбиусом], предложенная спецификация протокола HTCPCP имеет тот недостаток, что не предусматривает кода ошибки «Out of Coffee» для случая, когда кофе в кофеварке закончился. [https://bugzilla.mozilla.org/show_bug.cgi?id=46647#c9 Обсуждались] возможности расширения спецификации протокола для случаев других напитков: [[чай|чая]], [[пиво|пива]], [[молоко|молока]] и т. п.


== Использование ==
== Интересные факты ==
Некоторые веб-фреймворки поддерживают HTTP-статус 418 «I’m a teapot», например [[Django]]<ref>{{Cite web|url=https://github.com/django/django/blob/1.6/django/http/response.py#L64|title=django/django|publisher=GitHub|lang=en|accessdate=2017-05-18}}</ref>, Flask (Werkzeug<ref>{{Cite web|url=https://github.com/mitsuhiko/werkzeug/blob/0.9.3/werkzeug/exceptions.py#L412|title=pallets/werkzeug|publisher=GitHub|lang=en|accessdate=2017-05-18}}</ref>), [[Symfony]]<ref>{{Cite web|url=https://github.com/symfony/HttpFoundation/blob/2.7/Response.php#L62|title=symfony/http-foundation|publisher=GitHub|lang=en|accessdate=2017-05-18}}</ref>, [[Yii]]<ref>{{Cite web|url=https://github.com/yiisoft/yii2/blob/master/framework/web/Response.php#L208|title=yiisoft/yii2|author=|website=|date=|publisher=GitHub|accessdate=2015-09-25}}</ref>, [[Spring Framework|Spring]] и Bottle<ref>{{Cite web|url=https://github.com/bottlepy/bottle/blob/master/bottle.py#L4291|title=bottlepy/bottle|author=|website=|date=|publisher=GitHub|accessdate=2016-04-23}}</ref>.
HTTP-статус 418 «I’m a teapot» является шуточным, и не ожидается, что он будет поддерживаться реальными серверами, однако он до сих пор иногда используется в качестве [[Пасхальное яйцо (виртуальное)|пасхального яйца]]. Данный код ошибки поддерживают такие веб-фреймворки, как [[ASP.NET]]<ref>{{Cite web|lang=en|url=https://github.com/dotnet/aspnetcore/blob/main/src/Http/Http.Abstractions/src/StatusCodes.cs|title=dotnet/aspnetcore|website=GitHub}}</ref>, [https://nestjs.com/ NestJS]<ref>{{Cite web|lang=en|url=https://docs.nestjs.com/|title=Documentation {{!}} NestJS - A progressive Node.js framework|website=Documentation {{!}} NestJS - A progressive Node.js framework|access-date=2021-04-28|archive-date=2021-05-01|archive-url=https://web.archive.org/web/20210501111110/https://docs.nestjs.com/|deadlink=no}}</ref>, [[Django]]<ref>{{Cite web|url=https://github.com/django/django/blob/1.6/django/http/response.py#L64|title=django/django|publisher=GitHub|lang=en|accessdate=2017-05-18}}</ref>, [[Flask (веб-фреймворк)|Flask]] (Werkzeug<ref>{{Cite web|url=https://github.com/mitsuhiko/werkzeug/blob/0.9.3/werkzeug/exceptions.py#L412|title=pallets/werkzeug|publisher=GitHub|lang=en|accessdate=2017-05-18}}</ref>), [[Symfony]]<ref>{{Cite web|url=https://github.com/symfony/HttpFoundation/blob/2.7/Response.php#L62|title=symfony/http-foundation|publisher=GitHub|lang=en|accessdate=2017-05-18}}</ref>, [[Yii]]<ref>{{Cite web|url=https://github.com/yiisoft/yii2/blob/master/framework/web/Response.php#L208|title=yiisoft/yii2|author=|website=|date=|publisher=GitHub|accessdate=2015-09-25}}</ref>, [[Spring Framework|Spring]] и [[:en:Bottle (web framework)|Bottle]]<ref>{{Cite web|url=https://github.com/bottlepy/bottle/blob/master/bottle.py#L4291|title=bottlepy/bottle|author=|website=|date=|publisher=GitHub|accessdate=2016-04-23|archive-date=2016-02-18|archive-url=https://web.archive.org/web/20160218042108/https://github.com/bottlepy/bottle/blob/master/bottle.py#L4291|deadlink=no}}</ref>. На сайте [[Google (компания)|Google]] имеется [https://www.google.com/teapot веб-страница], обращение к которой приводит к появлению ошибки 418. На самой странице изображён чайник, из которого можно налить чай в чашку, нажав на него, или наклонив устройство в мобильной версии. Сайт https://huku.one/teapot возвращает стандартную страницу ошибок [[Apache HTTP Server|Apache]] с кодом 418, хотя сам веб-сервер не поддерживает данный код.


В период [[Российско-украинский кризис (2021—2022)|Российско-украинского кризиса (2021—2022)]] сайт [[Министерство обороны Российской Федерации|Министерства обороны Российской Федерации]] mil.ru в качестве меры для защиты от [[DoS-атака|DoS-атак]] возвращал ошибку 418 при попытки доступа из-за пределов России.<ref>{{Cite web |date=2022-02-25 |title=Russia appears to deploy digital defenses after DDoS attacks |url=https://therecord.media/russia-appears-to-deploy-digital-defenses-after-ddos-attacks/ |access-date=2022-02-26 |website=[[The Record by Recorded Future]] |language=en}}</ref><ref>{{Cite web |title=I Went to a Russian Website and All I Got Was This Lousy Teapot |url=https://www.pcmag.com/news/i-went-to-a-russian-website-and-all-i-got-was-this-lousy-teapot |access-date=2022-02-28 |website=[[PCMag]] |language=en}}</ref>. Впервые такое поведение было замечено в декабре 2021 года.<ref>{{cite web | url=https://news.ycombinator.com/item?id=29594249 | title=Russian MoD website blocked for non-Russian IPs &#124; Hacker News }}</ref>
== См. также ==
* [[Первоапрельские RFC]]
* [[IP посредством почтовых голубей]]


== Ссылки ==
== Ссылки ==

Версия от 14:14, 26 августа 2022

Кофеварка для приготовления эспрессо

Hyper Text Coffee Pot Control Protocol (HTCPCP, гипертекстовый протокол управления кофеваркой) — протокол для управления, слежения и диагностики приборов для приготовления кофе.

HTCPCP описан в RFC 2324, опубликованном 1 апреля 1998 года. Хотя RFC, описывающий протокол, является первоапрельской шуткой и не может приниматься всерьёз, он описывает сам протокол достаточно серьёзно, так, как будто он является действительно существующим. Пока не существует ни одной известной полноценной реализации этого протокола.

HTCPCP является расширением HTTP. Запросы HTCPCP определяются с помощью схемы URI coffee: и содержат несколько добавлений к HTTP-запросам:

  • BREW или POST: Заставляет сервер HTCPCP подавать кофе. Использование POST для этой цели не рекомендуется. Предлагается новое поле заголовка HTTP-запроса «Accept-Additions», поддерживающее дополнительные ингредиенты, включая сливки, цельное молоко, ваниль, малину, виски и т. д.
  • GET: «получает» кофе от HTCPCP-сервера.
  • PROPFIND: возвращает метаданные о кофе.
  • WHEN: Заставляет HTCPCP-сервер завершить добавление молока в кофе (если это возможно).

Также сервер может возвращать ошибки. Ниже представлены их коды:

  • 406 «Not Acceptable» (Ошибка 406: Не приемлемо) — возвращается при ситуации, когда сервер не в состоянии выполнить запрос клиента; ответ сервера при этом должен содержать также перечень видов кофе, доступных для приготовления.
  • 418 «I’m a teapot» (Ошибка 418: Я чайник) — возвращается при попытке приготовить кофе с помощью чайника.

Как было отмечено Штефаном Мёбиусом, предложенная спецификация протокола HTCPCP имеет тот недостаток, что не предусматривает кода ошибки «Out of Coffee» для случая, когда кофе в кофеварке закончился. Обсуждались возможности расширения спецификации протокола для случаев других напитков: чая, пива, молока и т. п.

Использование

HTTP-статус 418 «I’m a teapot» является шуточным, и не ожидается, что он будет поддерживаться реальными серверами, однако он до сих пор иногда используется в качестве пасхального яйца. Данный код ошибки поддерживают такие веб-фреймворки, как ASP.NET[1], NestJS[2], Django[3], Flask (Werkzeug[4]), Symfony[5], Yii[6], Spring и Bottle[7]. На сайте Google имеется веб-страница, обращение к которой приводит к появлению ошибки 418. На самой странице изображён чайник, из которого можно налить чай в чашку, нажав на него, или наклонив устройство в мобильной версии. Сайт https://huku.one/teapot возвращает стандартную страницу ошибок Apache с кодом 418, хотя сам веб-сервер не поддерживает данный код.

В период Российско-украинского кризиса (2021—2022) сайт Министерства обороны Российской Федерации mil.ru в качестве меры для защиты от DoS-атак возвращал ошибку 418 при попытки доступа из-за пределов России.[8][9]. Впервые такое поведение было замечено в декабре 2021 года.[10]

Ссылки

  • RFC 2324 — Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)
  • HOWTO-Coffee — Руководство по приготовлению кофе с помощью Linux

Примечания

  1. dotnet/aspnetcore (англ.). GitHub.
  2. Documentation | NestJS - A progressive Node.js framework (англ.). Documentation | NestJS - A progressive Node.js framework. Дата обращения: 28 апреля 2021. Архивировано 1 мая 2021 года.
  3. django/django (англ.). GitHub. Дата обращения: 18 мая 2017.
  4. pallets/werkzeug (англ.). GitHub. Дата обращения: 18 мая 2017.
  5. symfony/http-foundation (англ.). GitHub. Дата обращения: 18 мая 2017.
  6. yiisoft/yii2. GitHub. Дата обращения: 25 сентября 2015.
  7. bottlepy/bottle. GitHub. Дата обращения: 23 апреля 2016. Архивировано 18 февраля 2016 года.
  8. Russia appears to deploy digital defenses after DDoS attacks (англ.). The Record by Recorded Future (25 февраля 2022). Дата обращения: 26 февраля 2022.
  9. I Went to a Russian Website and All I Got Was This Lousy Teapot (англ.). PCMag. Дата обращения: 28 февраля 2022.
  10. Russian MoD website blocked for non-Russian IPs | Hacker News.