510 Not Extended
Применение
Код состояния 510 Not Extended является частью HTTP Extension Framework. Сейчас IANA указывает 510 как «Not Extended (OBSOLETED)», а сама спецификация переведена в статус Historic, то есть протокол больше не рекомендуется к использованию.
Ошибка возникает, когда клиент обязан использовать расширенный HTTP-запрос, но не сделал этого. Ответ сервера содержит сведения о том, как расширить запрос, хотя точный формат в протоколе не определён.
Влияние на SEO
Поисковые системы обрабатывают 510 так же, как и другие серверные ошибки 5xx. Постоянные сбои снижают частоту сканирования и в конечном итоге приводят к удалению затронутых URL из индекса.
Пример
Клиент отправляет запрос, требующий обязательного расширения HTTP. Сервер отвечает 510 Not Extended, поскольку в запросе отсутствуют необходимый префикс M- и объявление расширения.
Запрос
GET /resource HTTP/1.1
Host: example.com
Ответ
HTTP/1.1 510 Not Extended
Content-Type: text/html; charset=UTF-8
Content-Length: 199
<html>
<head>
<title>Not Extended</title>
</head>
<body>
<p>The request requires a mandatory HTTP
extension. Resubmit with the required
extension headers.</p>
</body>
</html>
Как исправить
Сервер требует расширение HTTP, которое клиент не включил в запрос. Тело ответа 510 описывает, какое именно расширение необходимо.
На стороне клиента:
На стороне сервера:
На практике этот код состояния встречается крайне редко. HTTP Extension Framework переведён в статус Historic и практически не получил распространения. Большинство современных API и веб-приложений реализуют согласование возможностей через пользовательские заголовки, параметры запроса или версионирование API, а не через механизм Extension Framework.
510 в service workers
Service worker, перехватывающий fetch-запросы, иногда выдаёт 510, когда у него нет расширения или возможности, которую требует источник. Способ исправления тот же: посмотрите в теле ответа, какое расширение отсутствует, и обновите обработчик fetch в service worker, чтобы он включал требуемые заголовки.
Примеры кода
.NET
HttpStatusCode.NotExtended
Rust
http::StatusCode::NOT_EXTENDED
Rails
:not_extended
Go
http.StatusNotExtended
Symfony
Response::HTTP_NOT_EXTENDED
Python3.5+
http.HTTPStatus.NOT_EXTENDED
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_NOT_EXTENDED
Angular
@angular/common/http/HttpStatusCode.NotExtended