HTTP response status code 510 Not Extended is a server error used to indicate that an extended HTTP request (in the context of RFC 2774) is required, but is not used.
Usage
When the 510 Not Extended status code is received, it is being used as part of the HTTP extension mechanism that is provided by RFC 2774. As of February 2000, this is an experimental HTTP protocol and has not been officially adopted as a standard.
The error occurs when the client is required to use an “extended HTTP request», but has not done so. Included as part of the HTTP response, the server informs the client as to how to extend the HTTP request. However, a format for doing is unspecified in the HTTP specification.
Code references
.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
Takeaway
The 510 Not Extended status code is a server error that indicates an extended HTTP request is not supplied by the client, yet one is required. Consequently, the HTTP request cannot be completed.
See also
- RFC 2774
Last updated: June 29, 2022
В этой спецификации клиент может послать запрос,содержащий декларацию расширения,которая описывает расширение,которое будет использоваться.Если сервер получает такой запрос,но все описанные расширения не поддерживаются для данного запроса,то сервер отвечает кодом состояния 510.
Коды состояния HTTP-это трехзначные ответы,которые приходят от сервера к браузеру.В общем,это сообщения от сервера,которые дают вам знать,как все прошло,когда ваш сайт получил запрос на просмотр определенной страницы вашего сайта.
Код состояния HTTP 301-постоянное перенаправление.
I’m getting to know the http status codes and kind of stuck on the 510 Not Extended.
It’s mentioned on many sites like wikipedia but not under the unofficial codes. However when I read the rfc2774 it’s labelled ‘Experimental’.
- So should I assume that it’s (not?) used? Do any servers/sites support/use it?
I also wonder how the status code is supposed to work
-
Do you use 510 only if the client attempted to send a Man or C-Man that is not supported by the server?
- (update) It seems that the apache http server htaccess ErrorDocument returns
"A mandatory extension policy in the request is not accepted by the server for this resource."
askapache.com - (update) OTOH
Servers can force the use of the HTTP Extension Framework by using the 510 "Not Extended" HTTP status code.
Simple Object Access Protocol (SOAP) 1.1
- (update) It seems that the apache http server htaccess ErrorDocument returns
-
How does a server send back all the information necessary for the client to issue an extended request?
The rfc says
The policy for accessing the resource has not been met in the
request. The server should send back all the information necessary
for the client to issue an extended request. It is outside the scope
of this specification to specify how the extensions inform the
client.
What does this mean?
I’d figure it worked something like
(Must use GET on resource /html and the extension «x»)
HTTP/1.1 510 Extended
M-GET /html
Man : "http://www.company.com/extension"; ns=11
11-ext : "x"
HTTP/1.1 510 Extended
M-GET /html
C-Man : "http://www.company.com/extension"; ns=11
11-ext : "x"
Connection: C-Man, 11-ext
But section 6 says this
A server MUST NOT include mandatory extension declarations in an HTTP
response unless it is responding to a mandatory HTTP request whose
definition allowed for the mandatory response or the server has some
a priori knowledge that the recipient can handle the extended
response. A server MAY include optional extension declarations in
any HTTP response (see section 4).
As a note. I read that the «ext» and «c-ext» are not relevant here because
The extension response header fields are exclusively intended to serve as
extension acknowledgements, and can not carry any other information.
(update) Example 4 SOAP Using HTTP Extension Framework in section 6.4 SOAP HTTP Examples looks similar to my example?
M-POST /StockQuote HTTP/1.1
Man: "http://schemas.xmlsoap.org/soap/envelope/"; ns=NNNN
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
NNNN-SOAPAction: "http://electrocommerce.org/abc#MyMessage"
<SOAP-ENV:Envelope...
HTTP/1.1 200 OK
Ext:
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope...
The policy for accessing the resource has not been met in the request. The server should send back all the information necessary for the client to issue an extended request.
It is outside the scope of this specification to specify how the extensions inform the client.
If the 510 response contains information about extensions that were not present in the initial request then the client MAY repeat the request if it has reason to believe it can fulfill the extension policy by modifying the request according to the information provided in the 510 response. Otherwise the client MAY present any entity included in the 510 response to the user, since that entity may include relevant diagnostic information.
- Source: RFC2774 Section 7
510 CODE REFERENCES
Rails HTTP Status Symbol :not_extended
Symfony HTTP Status Constant Response::HTTP_NOT_EXTENDED
.NET HttpStatusCode.NotExtended
Rust http::StatusCode::NOT_EXTENDED
Go http.StatusNotExtended
Python3.5+ http.HTTPStatus.NOT_EXTENDED
Apache HttpComponents Core org.apache.hc.core5.http.HttpStatus.SC_NOT_EXTENDED
Angular @angular/common/http/HttpStatusCode.NotExtended
510 status code example
Here’s an example of a request and response that could result in a 510 Not Extended status code:
Request
GET /resource HTTP/1.1
Host: example.com
Response
HTTP/1.1 510 Not Extended
Content-Type: text/html
Content-Length: 219
<!DOCTYPE html>
<html>
<head>
<title>510 Not Extended</title>
</head>
<body>
<h1>Not Extended</h1>
<p>The server requires a protocol extension that the client did not provide.</p>
</body>
</html>
In this example, the client is requesting the “/resource” URL from the example.com server. However, the server responds with a 510 Not Extended status code to indicate that the server requires a protocol extension that the client did not provide. The response includes a message body that provides additional details about the error.
What causes a 510 status code?
A 510 Not Extended status code occurs when the client needs to add additional extensions to the request headers to fulfill the request, but the server does not accept the request without these extensions.
For example, a server might return a 510 response if the client attempted to use an HTTP method that the server does not recognize, or if the client failed to include a required request header.
The 510 status code is not a common status code and is rarely seen in practice. It may be encountered when communicating with experimental or specialized protocols that require specific extensions or headers to be included in requests.
How to fix a 510 status code
If you receive a 510 Not Extended status code, the issue is likely related to the specific protocol or extensions required by the server.
Here are a few potential troubleshooting steps you can take:
- Check protocol and extension requirements: The first step is to review the server’s documentation or contact the server administrator to determine what protocol extensions are required for the request to be successful. Once you have identified the required extensions, you can modify the request headers to include the necessary information.
- Upgrade or modify the client: If the client does not support the required protocol extensions, you may need to upgrade or modify the client to ensure that it can communicate with the server. This could involve updating the client software or implementing custom code to handle the required extensions.
- Use a different protocol or server: If the required protocol extensions are not feasible or if the server is not compatible with the client, you may need to use a different protocol or server to accomplish your task.
In general, resolving a 510 error requires understanding the specific protocol and extension requirements of the server and modifying the client to include the necessary information. If you are unsure about how to proceed, it may be helpful to consult the server documentation or contact the server administrator for assistance.
Additional resources
- Learn about web development
- Learn about SEO
- Web development services from WebFX
- SEO services from WebFX
- MDN Web Docs
- W3Schools
Return to List of HTTP Status Codes
400 — Bad Request (Некорректный запрос)
«Плохой запрос». Этот ответ означает, что сервер не понимает… Читать далее
Подробнее
401 — Unauthorized (Не авторизован)
«Неавторизовано». Для получения запрашиваемого ответа нужна … Читать далее
Подробнее
402 — Payment Required (Необходима оплата)
«Необходима оплата». Этот код ответа зарезервирован для буду… Читать далее
Подробнее
403 — Forbidden (Запрещено)
«Запрещено». У клиента нет прав доступа к содержимому, поэто… Читать далее
Подробнее
404 — Not Found (Не найдено)
«Не найден». Сервер не может найти запрашиваемый ресурс. Код… Читать далее
Подробнее
405 — Method Not Allowed (Метод не поддерживается)
«Метод не разрешен». Сервер знает о запрашиваемом методе, но… Читать далее
Подробнее
406 — Not Acceptable (Неприемлемо)
Этот ответ отсылается, когда веб сервер после выполнения ser… Читать далее
Подробнее
407 — Proxy Authentication Required (Необходима аутентификация прокси)
Этот код ответа аналогичен коду 401, только аутентификация т… Читать далее
Подробнее
408 — Request Timeout (Истекло время ожидания)
Ответ с таким кодом может прийти, даже без предшествующего з… Читать далее
Подробнее
409 — Conflict (Конфликт)
Этот ответ отсылается, когда запрос конфликтует с текущим со… Читать далее
Подробнее
410 — Gone (Удалён)
Этот ответ отсылается, когда запрашиваемый контент удален с … Читать далее
Подробнее
411 — Length Required (Необходима длина)
Запрос отклонен, потому что сервер требует указание заголовк… Читать далее
Подробнее
412 — Precondition Failed (Условие ложно)
Клиент указал в своих заголовках условия, которые сервер не … Читать далее
Подробнее
413 — Request Entity Too Large (Полезная нагрузка слишком велика)
Размер запроса превышает лимит, объявленный сервером. Сервер… Читать далее
Подробнее
414 — Request-URI Too Long (URI слишком длинный)
URI запрашиваемый клиентом слишком длинный для того, чтобы с… Читать далее
Подробнее
415 — Unsupported Media Type (Неподдерживаемый тип данных)
Медиа формат запрашиваемых данных не поддерживается сервером… Читать далее
Подробнее
416 — Requested Range Not Satisfiable (Диапазон не достижим)
Диапозон указанный заголовком запроса Range не может бы… Читать далее
Подробнее
417 — Expectation Failed (Ожидание не удалось)
Этот код ответа означает, что ожидание, полученное из заголо… Читать далее
Подробнее
418 — I’m a teapot (Я — чайник)
I’m a teapot — Этот код был введен в 1998 году как одна из т… Читать далее
Подробнее
419 — Authentication Timeout (not in RFC 2616) (Обычно ошибка проверки CSRF)
Authentication Timeout (not in RFC 2616) — Этого кода нет в … Читать далее
Подробнее
420 — Enhance Your Calm (Twitter) (Подождите немного (Твиттер))
Возвращается Twitter Search и Trends API, когда клиент отпра… Читать далее
Подробнее
421 — Misdirected Request (Неверный запрос)
Misdirected Request — запрос был перенаправлен на сервер, не… Читать далее
Подробнее
422 — Unprocessable Entity (Необрабатываемый экземпляр)
Запрос имел правильный формат, но его нельзя обработать из-з… Читать далее
Подробнее
423 — Locked (Заблокировано)
Целевой ресурс из запроса заблокирован от применения к нему … Читать далее
Подробнее
424 — Failed Dependency (Невыполненная зависимость)
Не удалось завершить запрос из-за ошибок к предыдущем запрос… Читать далее
Подробнее
425 — Too Early (Слишком рано)
Too Early — сервер не готов принять риски обработки «ранней … Читать далее
Подробнее
426 — Upgrade Required (Необходимо обновление)
Указание сервера, клиенту, обновить протокол. Заголовок отве… Читать далее
Подробнее
428 — Precondition Required (Необходимо предусловие)
Precondition Required — сервер указывает клиенту на необходи… Читать далее
Подробнее
429 — Too Many Requests (Слишком много запросов)
Too Many Requests — клиент попытался отправить слишком много… Читать далее
Подробнее
430 — Would Block (Будет заблокировано)
Код состояния 430 would Block — это код, который сервер мог … Читать далее
Подробнее
431 — Request Header Fields Too Large (Поля заголовка запроса слишком большие)
Request Header Fields Too Large — Превышена допустимая длина… Читать далее
Подробнее
434 — Requested host unavailable (Запрашиваемый адрес недоступен)
Сервер к которому вы обратились недоступен… Читать далее
Подробнее
444 — No Response (Nginx) (Нет ответа (Nginx))
Код ответа Nginx. Сервер не вернул информацию и закрыл соеди… Читать далее
Подробнее
449 — Retry With (Повторить с…)
Retry With — возвращается сервером, если для обработки запро… Читать далее
Подробнее
450 — Blocked by Windows Parental Controls (Microsoft) (Заблокировано родительским контролем Windows (Microsoft))
Расширение Microsoft. Эта ошибка возникает, когда родительск… Читать далее
Подробнее
451 — Unavailable For Legal Reasons (Недоступно по юридическим причинам)
Unavailable For Legal Reasons — доступ к ресурсу закрыт по ю… Читать далее
Подробнее
499 — Client Closed Request (Клиент закрыл соединение)
Нестандартный код состояния, представленный nginx для случая… Читать далее
Подробнее