418 I'm a teapot
사용법
418 I’m a teapot 오류 메시지는 IETF의 만우절 농담 중 하나로 고안되었습니다. 해당 RFC는 커피를 끓이라는 요청을 받은 찻주전자는 이 메시지로 응답한다고 서술합니다. 구체적으로, 그 결과 메시지 본문은 짧고 통통하다고 묘사됩니다.
이 상태 코드는 운영 환경에서 사용되지는 않지만 많은 HTTP 라이브러리가 이 코드를 지원합니다. 해당 번호를 공식 용도로 쓸 수 있게 이 상태 코드를 없애려던 시도는 반발에 부딪혔고 Save 418 운동으로 이어졌습니다. 이 메시지와 상태 코드는 그대로 남아 있습니다.
상태 코드 예약
HTTP 명세는 널리 퍼진 HTCPCP 구현과의 충돌을 피하기 위해 상태 코드 418을 “(Unused)“로 예약해 두었습니다.
SEO 영향
Google 같은 검색 엔진은 418 I’m a teapot 응답 상태를 가진 URL을 색인하지 않습니다. 이전에 색인된 URL은 검색 결과에서 제거됩니다.
예시
클라이언트가 커피를 끓여 달라고 요청하지만 찻주전자가 이의를 제기합니다.
요청
BREW coffee HTTP/1.1
Host: example.com
Content-Type: message/coffeepot
Content-Length: 5
start
응답
HTTP/1.1 418 I'm a teapot
Content-Type: text/html
Content-Length: 146
<html>
<head>
<title>Beverage not supported</title>
</head>
<body>
<p>This is a teapot. Coffee is not supported.</p>
</body>
</html>
418 응답 유발하기
418 응답은 HTCPCP 농담 프로토콜을 지원하도록 설정된 서버나, 이 코드를 명시적으로 반환하는 애플리케이션에서만 돌아옵니다. Google은 이스터 에그로 google.com/teapot에서 418을 반환합니다. 많은 웹 프레임워크에서는 응답 상태 코드를 직접 설정해 418을 반환할 수 있습니다. 의도적인 설정 없이 418을 반환하는 표준 HTTP 서버는 없습니다.
418의 역사
이 상태 코드는 1998년 Hyper Text Coffee Pot Control Protocol(HTCPCP)에 대한 만우절 명세의 일부로 등장했습니다. HTCPCP를 차(tea)까지 확장하는 동반 명세가 2014년에 뒤따랐습니다. 2017년 IETF가 이 코드를 공식 용도로 회수하려 하자 개발자 커뮤니티가 반대하며 Save 418 운동을 시작했습니다. IETF는 결국 주요 HTTP 명세에서 이 코드를 “(Unused)“로 예약했습니다.
코드 참고
.NET
StatusCodes.Status418ImATeapot
Rust
http::StatusCode::IM_A_TEAPOT
Go
http.StatusTeapot
Symfony
Response::HTTP_I_AM_A_TEAPOT
Python3.9+
http.HTTPStatus.IM_A_TEAPOT
Angular
@angular/common/http/HttpStatusCode.ImATeapot