Найти в Дзене
Андрей Созыкин

451 – Код HTTP для цензуры

В протоколе HTTP есть 75 кодов статусов ответов, из которых на практике используется около десяти. Но временами появляются и редкие коды. Сейчас все чаще встречается код 451 – Unavailable For Legal Reasons (страница недоступна по юридическим причинам). Например, он выдается при попытке скачать IDE от JetBrains или прочитать статью на Хабре об обходе блокировок. Когда-то в HTTP не было выделенного кода статуса для цензуры, применялся код 403 Forbidden. Например, чтобы ограничить доступ к пиратскому ресурсу The Pirate Bay. Но в 2012 году Теренс Иден в заметке «There is no HTTP code for censorship (but perhaps there should be)» обратил внимание что код 403 содержательно не соответствует ситуации. Во-первых, класс кодов статусов 4ХХ предназначен для случаев, когда ошибся клиент. Но клиенты не совершают ошибки, когда обращаются к сайтам, на которые наложены юридические ограничения. Во-вторых, в описании кода 403 сказано, что он должен выдаваться, когда сервер понял запрос, но отказывается
Код статуса HTTP 451 при загрузке IntelliJ IDEA от JetBrains
Код статуса HTTP 451 при загрузке IntelliJ IDEA от JetBrains

В протоколе HTTP есть 75 кодов статусов ответов, из которых на практике используется около десяти. Но временами появляются и редкие коды. Сейчас все чаще встречается код 451 – Unavailable For Legal Reasons (страница недоступна по юридическим причинам). Например, он выдается при попытке скачать IDE от JetBrains или прочитать статью на Хабре об обходе блокировок.

Когда-то в HTTP не было выделенного кода статуса для цензуры, применялся код 403 Forbidden. Например, чтобы ограничить доступ к пиратскому ресурсу The Pirate Bay. Но в 2012 году Теренс Иден в заметке «There is no HTTP code for censorship (but perhaps there should be)» обратил внимание что код 403 содержательно не соответствует ситуации.

Во-первых, класс кодов статусов 4ХХ предназначен для случаев, когда ошибся клиент. Но клиенты не совершают ошибки, когда обращаются к сайтам, на которые наложены юридические ограничения.

Во-вторых, в описании кода 403 сказано, что он должен выдаваться, когда сервер понял запрос, но отказывается выполнять его. Юридические ограничения часто реализуются провайдерами, в таком случае сервер даже не получает запрос.

Теренс Иден посчитал целесообразным выделить отдельный код ответа HTTP для указания юридических ограничений и предложил несколько вариантов:

  • HTTP 112 - Emergency. Censorship in action, чрезвычайная ситуация, цензура в действии (в Европе телефон 112 используется для сообщения о чрезвычайных ситуациях).
  • HTTP 460 - Blocked by Repressive Regime, заблокировано репрессивным режимом.
  • HTTP 560 - Server is being censored, сервер находится под цензурой.
  • HTTP 911 - Internet Emergency, чрезвычайная ситуация в интернет (телефон 911 используется для сообщения о чрезвычайных ситуациях в США).

Аргументацию Теренса Идена посчитали правильной и в 2016 году IETF принял документ RFC 7725 «An HTTP Status Code to Report Legal Obstacles». В этом документе для указания ограничений по юридическим причинам предлагается использовать код 451. В разделе благодарностей RFC 7725 указаны Теренс Иден и Рэй Брэдбери.