HTTP 요청과 HTTP 응답의 형식은 유사하며 둘 다 다음과 같은 구조를 갖습니다.
상태 줄 + CRLF(캐리지 리턴 및 줄 바꿈)로 시작
0개 또는 여러 줄 헤더 모듈+CRLF
CRLF와 같은 빈 줄
파일, 쿼리 데이터, 쿼리 출력과 같은 선택적 메시지 본문
예를 들어 서버 응답 헤더는 다음과 같습니다.
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ...HeaderN: ... (빈 줄)<!doctype ...><html><head>...</head><body> ... </body></html>
상태 줄에는 HTTP 버전, 상태 코드 및 상태 코드에 해당하는 짧은 메시지가 포함됩니다.
다음 표에는 서버에서 반환될 수 있는 HTTP 상태 코드 및 관련 메시지가 나열되어 있습니다.
상태 코드 | 정보 | 설명하다 |
---|---|---|
100 | 계속하다 | 요청의 일부만 서버에서 수신되지만 서버에서 거부되지 않는 한 클라이언트는 요청을 계속합니다. |
101 | 스위칭 프로토콜 | 서버 스위치 프로토콜 |
200 | 좋아요 | 요청이 확인되었습니다. |
201 | 생성됨 | 요청이 완료되고 새 리소스가 생성됩니다. |
202 | 수락됨 | 요청이 수락되었지만 처리되지 않았습니다. |
203 | 신뢰할 수 없는 정보 | |
204 | 콘텐츠 없음 | |
205 | 콘텐츠 재설정 | |
206 | 부분적인 콘텐츠 | |
300 | 다중 선택 | 하이퍼링크 테이블. 사용자는 하이퍼링크를 선택하고 이에 액세스할 수 있습니다. |
301 | 영구 이전됨 | 요청한 페이지가 새 URL로 이동되었습니다. |
302 | 설립하다 | 요청한 페이지가 일시적으로 새 URL로 이동되었습니다. |
303 | 기타 보기 | 요청한 페이지는 다른 URL에서 찾을 수 있습니다 |
304 | 수정되지 않음 | |
305 | 프록시 사용 | |
306 | 미사용 | 이 상태 코드는 더 이상 사용되지 않지만 상태 코드는 유지됩니다. |
307 | 임시 리디렉션 | 요청한 페이지가 일시적으로 새 URL로 이동되었습니다. |
400 | 잘못된 요청 | 서버가 요청을 인식하지 못합니다 |
401 | 승인되지 않은 | 요청한 페이지에는 사용자 이름과 비밀번호가 필요합니다 |
402 | 결제 필요 | 이 상태 코드는 아직 사용할 수 없습니다 |
403 | 금지됨 | 요청한 페이지에 대한 접근이 금지되어 있습니다 |
404 | 찾을 수 없음 | 서버가 요청한 페이지를 찾을 수 없습니다 |
405 | 허용되지 않는 방법 | 요청에 지정된 방법은 허용되지 않습니다. |
406 | 허용되지 않음 | 서버는 클라이언트가 받아들일 수 없는 응답만 생성할 수 있습니다. |
407 | 프록시 인증 필요 | 요청을 처리하려면 먼저 프록시 서버를 인증해야 합니다. |
408 | 요청 시간 초과 | 요청 시간이 서버가 대기할 수 있는 시간을 초과하여 연결이 끊어졌습니다. |
409 | 갈등 | 요청에 충돌이 있습니다. |
410 | 다 쓴 | 요청한 페이지는 더 이상 사용할 수 없습니다. |
411 | 필요한 길이 | "Content-Length"가 정의되지 않았습니다. 서버가 요청 수락을 거부했습니다. |
412 | 전제조건 실패 | 요청한 전제조건이 서버에 의해 거짓으로 평가되었습니다. |
413 | 요청 엔터티가 너무 큼 | 요청한 엔터티가 너무 커서 서버가 요청 수락을 거부했습니다. |
414 | 요청 URL이 너무 깁니다. | URL이 너무 길기 때문에 서버가 요청 수락을 거부했습니다. "POST" 요청을 "GET" 요청으로 변환할 때 많은 양의 쿼리 정보가 나타나는 경우가 많습니다. |
415 | 지원되지 않는 미디어 유형 | 미디어 유형이 지원되지 않기 때문에 서버가 요청 수락을 거부했습니다. |
417 | 예상 실패 | |
500 | 내부 서버 오류 | 요청이 불완전하여 서버에 예상치 못한 상황이 발생했습니다. |
501 | 구현되지 않음 | 요청이 불완전하며 서버가 필요한 기능을 제공하지 않습니다. |
502 | 나쁜 게이트웨이 | 요청이 완료되지 않았으며 서버가 업스트림 서버로부터 잘못된 응답을 받았습니다. |
503 | 서비스를 이용할 수 없습니다 | 요청이 완료되지 않아 서버가 일시적으로 다시 시작되거나 종료됩니다. |
504 | 게이트웨이 시간 초과 | 게이트웨이 시간 초과 |
505 | HTTP 버전이 지원되지 않음 | 서버가 지정된 HTTP 버전을 지원하지 않습니다. |
다음 표에는 HttpServletResponse 클래스에서 상태 코드를 설정하는 데 사용되는 메서드가 나열되어 있습니다.
SN | 방법 및 설명 |
---|---|
1 | public void setStatus (int statusCode) 이 메소드는 모든 상태 코드를 설정할 수 있습니다. 응답에 특수 상태 코드와 문서가 포함된 경우 PrintWriter로 항목을 반환하기 전에 setStatus 메서드를 호출해야 합니다. |
2 | public void sendRedirect(String url) 이 메소드는 302 응답과 Location 헤더를 생성하여 URL에 새 문서를 알려줍니다. |
3 | public void sendError(int code, String message) 이 메소드는 상태 코드(보통 404)와 짧은 메시지를 HTML 문서에 자동으로 삽입하고 이를 클라이언트로 다시 보냅니다. |
다음 예에서는 407 오류 코드를 브라우저에 보내고 브라우저는 "인증 필요!!!"라고 알려줍니다.
<html><head><title>HTTP 상태 코드 설정</title></head><body><% // 오류 코드 설정 및 이유 설명 response.sendError(407, "인증 필요!!!" ) ; %></body></html>
위의 JSP 페이지에 액세스하면 다음과 같은 결과를 얻을 수 있습니다.
다른 상태 코드를 사용하여 예상치 못한 결과가 나타나는지 확인할 수도 있습니다.