HTTPQUERY
Русский

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