451 Unavailable For Legal Reasons
Применение
Код состояния 451 Unavailable For Legal Reasons не подтверждает и не опровергает существование ресурса. Сервер отказывает в доступе из-за юридического требования, и ему разрешено прямо об этом сообщить.
Ресурс заблокирован из-за цензуры. Этот код состояния HTTP отсылает к роману Рэя Брэдбери «451 градус по Фаренгейту».
Примеры применения ответа 451 Unavailable For Legal Reasons зависят от законодательства страны, из которой выполняется доступ. К распространённым случаям относятся нарушение авторских прав, нарушение неприкосновенности частной жизни и сайты азартных игр. Любая ситуация, связанная с решением суда, например запрет на публикацию, оправдывает этот код. Ответ 403 представляет собой более общую версию этой ошибки.
Прозрачность этого кода позволяет сторонним организациям собирать статистику о количестве и категориях сайтов, снятых с публикации из-за цензуры.
В некоторых случаях клиенты получают доступ к ресурсам альтернативными способами. VPN или сеть Tor скрывают точку происхождения, а прокси-сервер перенаправляет трафик браузера в другую страну.
В составе ответа сервер передаёт заголовок Link, идентифицирующий сторону, которая блокирует запрос. Это та сторона, которая отвечает за блокировку содержимого, а не та, которая предписала блокировку. Сведения о стороне, установившей такое правило, размещаются в теле сообщения.
Влияние на SEO
Поисковые системы вроде Google не индексируют URL с кодом состояния ответа 451 Unavailable For Legal Reasons. Ранее проиндексированные с этим кодом URL удаляются из результатов поиска.
Применение в Microsoft Exchange ActiveSync
Сообщение об ошибке 451 Redirect означает, что клиент подключается не к тому серверу. Либо почтовый ящик пользователя недоступен с этого сервера, либо существует более подходящий по эффективности сервер.
Когда ответ содержит заголовок X-MS-Location, последующие запросы используют указанный в нём адрес. Без заголовка X-MS-Location выполняется полный процесс Autodiscover.
Пример
Клиент запрашивает ресурс, и сервер отвечает 451 Unavailable For Legal Reasons. Заголовок Link идентифицирует организацию, ответственную за блокировку содержимого.
Запрос
GET /tech-trial-updates HTTP/1.1
Host: example.com
Ответ
HTTP/1.1 451 Unavailable For Legal Reasons
Link: <https://example.com/legaldept>; rel="blocked-by"
Content-Type: text/html
Content-Length: 174
<html>
<head>
<title>Publication Ban</title>
</head>
<body>
<p>The requested content is unavailable due
to a government-ordered publication ban.</p>
</body>
</html>
Как исправить
Технического решения на стороне клиента не существует. Сервер блокирует доступ, потому что ограничение предписано юридическим требованием. Сам ресурс остаётся на сервере в целости, но не отдаётся.
Прочитайте заголовок Link в ответе. Отношение rel=“blocked-by” указывает на организацию, применяющую блокировку (интернет-провайдер, DNS-провайдер или хостинговая платформа), а не на правовой орган, предписавший блокировку. Обратитесь к блокирующей стороне за подробностями о требовании.
Прочитайте тело ответа, где изложены правовые основания, сторона, предъявившая требование, и применимый закон или нормативный акт. Серверам рекомендуется включать эти сведения.
Доступ из другого географического региона в некоторых случаях обходит блокировки, действующие в конкретном регионе. VPN или сеть Tor направляют запросы через юрисдикцию, где ограничение не применяется.
Для операторов серверов
Возвращайте заголовок Link с rel=“blocked-by”, указывающий на организацию, отвечающую за применение блокировки:
Link: <https://legal.example.re>; rel="blocked-by"
Включите в тело ответа чёткое объяснение юридического требования: конкретный закон, предъявивший требование орган, а также классы затронутого содержимого или лиц.
Задайте подходящие заголовки кэширования. Добавьте Cache-Control: no-store, если правовой статус ресурса меняется часто.
Для Microsoft Exchange ActiveSync
Ответ 451 Redirect от Exchange означает, что клиент подключился не к тому серверу. Проверьте заголовок X-MS-Location в ответе и перенаправьте последующие запросы по указанному адресу. Без заголовка X-MS-Location заново выполните полный процесс Autodiscover, чтобы найти нужный сервер почтовых ящиков.
Примеры кода
.NET
HttpStatusCode.UnavailableForLegalReasons
Rust
http::StatusCode::UNAVAILABLE_FOR_LEGAL_REASONS
Rails
:unavailable_for_legal_reasons
Go
http.StatusUnavailableForLegalReasons
Symfony
Response::HTTP_UNAVAILABLE_FOR_LEGAL_REASONS
Python3.5+
http.HTTPStatus.UNAVAILABLE_FOR_LEGAL_REASONS
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus
.SC_UNAVAILABLE_FOR_LEGAL_REASONS
Angular
@angular/common/http/HttpStatusCode
.UnavailableForLegalReasons