English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
HTTP 요청과 HTTP 응답 메시지의 형식은 유사하며, 구조는 다음과 같습니다:
초기 상태 행 + 엔터 개행 문자(엔터+개행)
제목 행은 0개 또는 여러 개가 될 수 있습니다.+엔터 개행 문자
빈 행, 즉 엔터 개행 문자
선택 사항 메시지 본문, 예를 들어 파일, 쿼리 데이터 또는 쿼리 출력
예를 들어, 서버의 응답 헤더는 다음과 같습니다:
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Blank Line) !doctype ... <html> <head>.../head> <body> ... </body> </html>
상태 행은 HTTP 버전을 포함합니다(이 예제에서는 HTTP/1.1)、상태 코드(이 예제에서는 200)과 상태 코드에 해당하는 짧은 메시지(이 예제에서는 OK입니다)。
다음은 웹 서버에서 반환할 수 있는 HTTP 상태 코드와 관련된 정보 목록입니다:
코드 | 메시지 | 설명 |
---|---|---|
100 | Continue | 서버가 요청의 일부만을 수신했지만 거부되지 않았다면 클라이언트는 해당 요청을 계속해야 합니다. |
101 | Switching Protocols | 서버 프로토콜 전환 |
200 | OK | 요청이 성공했습니다。 |
201 | Created | 이 요청은 완전하며 새로운 자원을 생성합니다. |
202 | Accepted | 이 요청은 수락되었지만 처리는 불완전합니다. |
203 | Non-authoritative Information | |
204 | No Content | |
205 | Reset Content | |
206 | Partial Content | |
300 | Multiple Choices | 링크 목록. 사용자는 최대 다섯 개의 주소 중 하나를 선택하여 해당 위치로 이동할 수 있습니다. |
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 | Payment Required | 아직 해당 코드를 사용할 수 없습니다. |
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"는 정의되지 않았습니다. 서버는 클라이언트가 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 프로토콜" 버전을 지원하지 않습니다. |
다음의 메서드는 Servlet 프로그램에서 HTTP 상태 코드를 설정할 수 있습니다. 이 메서드들은 HttpServletResponse 객체 사용 가능
순번 | 메서드 및 설명 |
---|---|
1 | public void setStatus ( int statusCode ) 이 메서드는 임의의 상태 코드를 설정합니다. setStatus 메서드는 int(상태 코드)를 파라미터로 받습니다. 특별한 상태 코드와 문서가 포함된 응답이 있다면, 사용하기 전에 PrintWriter 실제로 어떤 내용도 반환하기 전에 setStatus를 호출해야 합니다. |
2 | public void sendRedirect(String url) 이 메서드는 302 응답을 생성하고, 새 문서 URL을 포함한 Location 헤더를 보냅니다. |
3 | public void sendError(int code, String message) 이 메서드는 일반적으로 404),HTML 문서 내부에서 자동으로 포맷되고 클라이언트로 전송되는 짧은 메시지와 함께 전송됩니다. |
아래의 예제는 407 에러 코드를 클라이언트 브라우저로 보내면, 브라우저는 "Need authentication!!!" 메시지를 표시합니다.
// 필요한 java 라이브러리 가져오기 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import javax.servlet.annotation.WebServlet; @WebServlet("/showError()) // HttpServlet 클래스 확장 public class showError extends HttpServlet { // GET 메서드 요청을 처리하는 메서드 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 에러 코드와 이유를 설정 response.sendError(407, "Need authentication!!!" ); } // POST 메서드 요청을 처리하는 메서드 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
지금, 위의 Servlet을 호출하면 다음과 같은 결과가 표시됩니다:
HTTP 상태 407 - 인증 필요!!!type 상태 보고서 message 인증 필요!!! description 고객은 먼저 프록시와 자신을 인증해야 합니다. (인증 필요!!!). Apache Tomcat/5.5.29 |