English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
HTTP 요청과 HTTP 응답의 구조는 비슷하며, 다음과 같은 구조를 가집니다:
상태 행으로+CRLF(리턴 carriage line feed)로 시작
0개 또는 여러 개의 헤더 모듈+CRLF
빈 줄, 예를 들어 CRLF
선택할 수 있는 메시지 본문, 예를 들어 파일, 쿼리 데이터, 쿼리 출력
예를 들어, 서버 응답 헤더는 다음과 같이 보입니다:
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (빈 줄) <!doctype ...> <html> <head>.../head> <body> ... </body> </html>
상태 행은 HTTP 버전, 상태 코드, 그 상태 코드와 관련된 짧은 메시지를 포함합니다.
다음 표는 서버에서 반환할 수 있는 HTTP 상태 코드와 관련된 메시지를 나열합니다:
상태 코드 | 메시지 | 설명 |
---|---|---|
100 | Continue | 서버가 요청의 일부만 수신했지만, 서버가 거부하지 않았다면 클라이언트는 이 요청을 계속할 것입니다 |
101 | Switching Protocols | 서버 스위칭 프로토콜 |
200 | OK | 요청이 확인되었습니다 |
201 | Created | 요청이 완전하면, 새로운 자원이 생성됩니다 |
202 | Accepted | 요청이 수락되었지만 처리되지 않았습니다 |
203 | Non-권위적인 정보 | |
204 | No Content | |
205 | Reset Content | |
206 | Partial Content | |
300 | Multiple Choices | 사용자가 선택할 수 있는 히트링크 테이블, 최대 지원5개의 히트링크 |
301 | Moved Permanently | 요청된 페이지는 새로운 URL로 이동했습니다 |
302 | Found | 요청된 페이지가 일시적으로 새로운 URL로 이동했습니다 |
303 | See Other | 요청된 페이지는 다른 URL에서 찾을 수 있습니다 |
304 | Not Modified | |
305 | Use Proxy | |
306 | Unused | 이 상태 코드는 더 이상 사용되지 않지만 상태 코드가 유지됩니다 |
307 | Temporary Redirect | 요청된 페이지가 일시적으로 새로운 URL로 이동했습니다 |
400 | Bad Request | 서버는 요청을 인식할 수 없습니다 |
401 | Unauthorized | 요청된 페이지는 사용자 이름과 비밀번호가 필요합니다 |
402 | 지불이 필요합니다 | 이 상태 코드는 현재 사용할 수 없습니다 |
403 | Forbidden | 요청된 페이지에 접근이 금지되었습니다 |
404 | Not Found | 서버는 요청된 페이지를 찾을 수 없습니다 |
405 | Method Not Allowed | 요청에 지정된 메서드가 허용되지 않습니다 |
406 | Not Acceptable | 서버는 클라이언트가 받을 수 없는 응답을 생성할 수 없습니다 |
407 | Proxy Authentication Required | 요청이 서비스되기 전에 프록시 서버를 인증해야 합니다 |
408 | Request Timeout | 요청 시간이 서버가 기다릴 수 있는 시간을 초과하여 연결이 끊어졌습니다 |
409 | Conflict | 요청에 모순이 있습니다 |
410 | Gone | 요청된 페이지가 더 이상 사용할 수 없습니다 |
411 | Length Required | "Content-"Length"가 정의되지 않았기 때문에 서버가 요청을 받아들이지 않습니다 |
412 | Precondition Failed | 서버가 요청의 전제 조건을 false로 평가했습니다 |
413 | Request Entity Too Large | 요청의 엔티티가 너무 크기 때문에 서버가 요청을 받아들이지 않습니다 |
414 | Request-url Too Long | URL이 너무 길어서 서버가 요청을 받아들이지 않습니다. "POST" 요청을 "GET" 요청으로 변환할 때 많은 쿼리 정보가 추가되면 발생합니다 |
415 | Unsupported Media Type | 서버가 지원하지 않는 미디어 타입으로 인해 요청을 받아들이지 않습니다 |
417 | Expectation Failed | |
500 | Internal Server Error | 요청이 불완전하며, 서버가 예상치 못한 상황을 만났습니다 |
501 | Not Implemented | 요청이 불완전하며, 서버가 필요한 기능을 제공하지 않습니다 |
502 | Bad Gateway | 요청이 불완전하며, 서버가 상류 서버에서 무효한 응답을 받았습니다 |
503 | Service Unavailable | 요청이 불완전하며, 서버가 일시적으로 재시작하거나 종료되었습니다 |
504 | Gateway Timeout | 게이트웨이 타임아웃 |
505 | HTTP Version Not Supported | 서버가 지정된 HTTP 버전을 지원하지 않습니다 |
다음 표는 HttpServletResponse 클래스에서 상태 코드를 설정하는 메서드를 나열합니다:
S.N. | 메서드 & 설명 |
---|---|
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에러 코드를 브라우저에 전달하면 브라우저는 "Need authentication!!!"라고 알려줄 것입니다.
<html> <head> <title>Setting HTTP Status Code</title> </head> <body> <% // 에러 코드를 설정하고 이유를 설명 response.sendError(407, "Need authentication!!!" ); %> </body> </html>
위 JSP 페이지에 접근하면 다음과 같은 결과를 얻게 됩니다:
다른 상태 코드를 사용해 보면 어떤 예상치 못한 결과를 얻게 될지 시도해 보세요.