HTTPQUERY
한국어

510 Not Extended

사용법

510 Not Extended 상태 코드는 HTTP Extension Framework의 일부입니다. IANA는 현재 510을 “Not Extended (OBSOLETED)“로 표기하고 있으며 해당 명세는 Historic 상태로 옮겨졌습니다. 즉 이 프로토콜은 더 이상 사용이 권장되지 않습니다.

이 오류는 클라이언트가 확장된 HTTP 요청을 사용해야 하는데 그렇게 하지 않았을 때 발생합니다. 서버 응답에는 요청을 어떻게 확장할지에 대한 정보가 포함되지만, 정확한 형식은 프로토콜에 규정되어 있지 않습니다.

SEO 영향

검색 엔진은 510을 다른 5xx 서버 오류와 동일하게 취급합니다. 실패가 지속되면 크롤링 속도가 줄고 결국 해당 URL이 색인에서 제거됩니다.

예시

클라이언트가 필수 HTTP 확장을 요구하는 요청을 보냅니다. 요청에 필요한 M- 접두사와 확장 선언이 포함되어 있지 않으므로 서버는 510 Not Extended로 응답합니다.

요청

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 상태로 옮겨졌고 채택률은 사실상 0에 가깝습니다. 대부분의 현대 API와 웹 애플리케이션은 Extension Framework 메커니즘이 아니라 커스텀 헤더, 쿼리 매개변수, API 버전 관리를 통해 기능 협상을 처리합니다.

서비스 워커에서의 510

fetch 요청을 가로채는 서비스 워커는 오리진이 요구하는 확장이나 기능을 워커가 갖추지 못했을 때 510을 드러내기도 합니다. 해결책은 동일합니다. 응답 본문에서 누락된 확장을 확인하고, 필요한 헤더를 포함하도록 서비스 워커의 fetch 핸들러를 수정하세요.

코드 참고

.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