HTTP란? HTTP 헤더와 상태코드 2xx 등의 의미
HTTP(HyperText Transfer Protocol)는 W3에서 정보를 주고 받을 수 있는 프로토콜입니다. 하이퍼 텍스트 전송 프로토콜은 웹 브라우저와 같은 통신 플랫폼에 웹 사이트를 로드할 때 사용되며 인터넷에서 데이터(HTML, CSS, 이미지, 비디오 등)를 전송하는데 사용되는 프로토콜입니다.
HTTP 요청 정보
HTTP 요청에는 보통 5가지의 정보를 확인할 수 있습니다.
ⓐ HTTP 버전 ⓑ URL ⓒ HTTP 메서드 ⓓ HTTP 헤더 ⓔ 선택 사항인 HTTP 본문
1. HTTP 버전
HTTP 버전은 초기 버전이 없을 때부터 시작하여 HTTP/1.0이 발표되면서 초기 버전은 HTTP/0.9가 됩니다. 이후 HTTP/1.1, HTTP/2를 거쳐 HTTP/3까지 버전이 나오게 됩니다. 2020년 대 전 후 HTTP는 2와 3버전이 병행되어 사용되고 있습니다.
2. HTTP 요청 URL
URL은 서버에 자원을 요청하기 위한 주소입니다.
EX) HTTPS://uknew.co/도메인이란
3. HTTP 메서드
HTTP 메서드는 웹 클라이언트와 서버 간의 통신에서 사용되는 요청 방식을 나타내는 것입니다. 이는 클라이언트가 원하는 작업을 서버에게 알리고, 서버는 이에 따른 작업을 수행하는 방식을 결정할 수 있도록 합니다.
HTTP 메서드는 주어진 리소스에 대해 수행하길 원하는 행동을 나타내며, 일반적으로 다음과 같은 동사들이 사용됩니다.
HTTP 메서드 | 설명 |
---|---|
GET | 서버에서 특정 리소스의 정보를 가져오기 위해 사용됩니다. |
POST | 클라이언트에서 서버로 데이터를 제출하고, 서버의 상태를 변경하기 위해 사용됩니다. |
HEAD | GET 메서드와 동일하지만, 응답 본문을 포함하지 않습니다. |
DELETE | 특정 리소스를 삭제하기 위해 사용됩니다. |
PUT | 클라이언트에서 서버로 데이터를 전송하여, 해당 리소스를 완전히 대체하거나 새로 생성하기 위해 사용됩니다. |
CONNECT | 클라이언트가 프록시 서버를 통해 다른 네트워크와 터널을 맺을 때 사용됩니다. |
OPTIONS | 목적 리소스의 통신을 설정하는 데 사용됩니다. |
TRACE | 클라이언트와 서버 간의 통신 메시지를 반복하여 테스트합니다. |
PATCH | 특정 리소스의 일부분을 수정하기 위해 사용됩니다. |
4. HTTP 헤더
HTTP 요청과 응답에는 모두 헤더가 포함됩니다. 이 헤더는 키-값 쌍으로 구성된 텍스트 정보를 담고 있으며, 클라이언트가 사용하는 브라우저와 요청하는 데이터 등과 같은 핵심 정보를 전달합니다. HTTP 헤더는 웹 브라우저와 서버 간의 통신에서 중요한 역할을 하며, 클라이언트와 서버가 서로 정보를 주고받는 데 필수적인 요소입니다.
크롬 개발자 도구를 통해 HTTP 헤더에는 앞서 언급한 요청 URL과 요청 메서드 등의 정보와 응답 헤더와 요청 헤더를 확인할 수 있습니다.
5. HTTP 요청 본문
HTTP 요청 본문에는 텍스트, 이미지, 오디오 등 다양한 종류의 데이터를 포함할 수 있습니다. 이 데이터는 요청을 처리하는 서버에서 분석되고 처리됩니다. 요청 본문의 크기는 HTTP 요청 헤더에 Content-Length 헤더 필드로 명시됩니다.
요청 본문은 일반적으로 HTML 폼 데이터, JSON 데이터, XML 데이터, 멀티파트 데이터 등과 같은 다양한 형식으로 전송됩니다. HTTP 요청 본문은 보안적인 이유로 암호화되어 전송되기도 합니다.
요청 본문은 일반적으로 HTML 폼 데이터, JSON 데이터, XML 데이터, 멀티파트 데이터 등과 같은 다양한 형식으로 전송됩니다. HTTP 요청 본문은 보안적인 이유로 암호화되어 전송되기도 합니다.
HTTP 상태코드
코드 | 메시지 | 설명 |
---|---|---|
1XX | Informational(정보) | 정보 교환. |
100 | Continue | 클라이언트가 서버에게 요청을 보내고, 서버가 해당 요청의 일부를 받았음을 의미. 이때 서버는 클라이언트에게 나머지 요청 정보를 계속 보내주길 바라는 의도로 100 상태 코드 반환(HTTP 1.1에서 처음으로 도입) |
101 | Switching Protocols | 클라이언트가 요청한 리소스가 요청된 URI의 표준 프로토콜(HTTP 또는 HTTPS)이 아닌 다른 프로토콜(예: WebSocket)을 사용하기 위해 서버가 변경되었음을 나타냄. 서버는 Upgrade 헤더를 사용하여 클라이언트와 새로운 프로토콜로 통신할 것임을 알리게 되며,이를 통해 클라이언트는 새로운 프로토콜을 사용하여 서버와 통신할 수 있음 |
2XX | Success(성공) | 데이터 전송이 성공적으로 이루어졌거나 이해되었거나 수락된 것을 나타냄. |
200 | OK | 전송이 성공적으로 완료됨. |
202 | Accepted | 클라이언트의 요청이 수락되었음. |
203 | Non-authoritavive Information | 클라이언트 요청 중 일부가 성공적으로 전송됨. |
204 | Non Content | 클라이언트 요청에 대한 처리는 완료되었으나, 서버가 전송할 데이터가 없음을 의미. |
205 | Reset Content | 새 문서 없음. 하지만 브라우저는 문서 창을 리셋해야 함. (HTTP 1.1에서 처음으로 도입) |
206 | Partial Content | 클라이언트가 Range 헤더와 함께 일부분만 요청하고, 서버가 해당 부분만 전송한 상태 (HTTP 1.1에서 처음 등장) |
3XX | Redirection(방향 바꿈) | 자료의 위치가 바꿤. |
300 | Multiple Choices | 최근에 이전된 데이터 요청 |
301 | Moved Permanently | 요구한 데이터를 변경한 새 URL에서 찾음 |
302 | Moved Permanently | 요구한 데이터가 변경된 URL에 있음을 명시. 301과 비슷하지만 새 URL이 일시적인 것으로 간주 |
303 | See Other | 요청한 데이터 미 변경으로 문제 있음. 새로운 요청이 필요함. (주로 POST 요청에 대한 응답으로 사용됨) |
304 | Not modified | 클라이언트의 캐시에 저장된 문서를 선택적으로 요청하여 문서가 수정되지 않았음을 알리는 상태 코드.(지정된 날짜보다 더 나중의 문서만을 보여주도록 하는 If-Modified-Since 헤더의 경우). |
305 | Use Proxy | 요청한 문서는 프록시를 통해 추출되어야 함. (HTTP 1.1에서 처음으로 도입) |
307 | Temporary Redirect | 임시적으로 자료 옴겨짐 |
4XX | Client Error(클라이언트 오류) | 클라이언트 측에서 발생한 오류. 주소를 잘못 입력하거나 요청이 잘못되었음을 나타냄. |
400 | Bad Request | 요청 실패. 문법상 오류로 서버가 요청사항을 처리하지 못함. |
401.1 | Unauthorized | 권한 없음 (접속실패). 서버에 로그인하려는 요청이 서버에 저장된 권한과 일치하지 않음. |
401.2 | Unauthorized | 권한 없음 (서버설정으로 인한 접속 실패). 클라이언트의 요청이 서버에 들어있는 권한과 일치하지 않음. |
401.3 | Unauthorized | 자원에 대한 ACL에 기인한 권한 없음. 클라이언트가 특정 자료에 접근할 권한이 없음. |
401.4 | Unauthorized | 권한 없음 (필터에 의한 권한 부여 실패). 서버의 필터 프로그램이 권한을 부여하지 못해서 클라이언트가 자원에 접근할 수 없는 경우. |
401.5 | Unauthorized | ISA PI나 CGI프로그램에 의한 권한 부여 실패로 클라이언트는 해당 자원에 접근할 수 없음. |
402 | Payment Required | 예약됨. |
403.1 | Forbidden | 금지 (수행접근 금지). 요청한 동작이 허용되지 않음. 수행시키지 못하도록 설정된 디렉터리 내의 파일을 수행하려고 했을 때 발생하는 오류. |
403.2 | Forbidden | 접근한 디렉터리에 가용한 기본 페이지가 없어서 읽기 접근이 금지됨. |
403.4 | Forbidden | 금지 (SSL 필요함). 클라이언트가 SSL 보안 연결을 사용하지 않고 SSL이 필요한 페이지에 액세스하려고 시도했을 때 발생 |
403.5 | Forbidden | 금지 (SSL 128필요함). 페이지(서버)가 128비트의 SSL로 보안유지 되고 있어 접근이 금지됨 |
403.6 | Forbidden | IP 차단. 사용자가 접속하려는 IP가 차단되어 접속할 수 없는 상태임. |
403.7 | Forbidden | 클라이언트가 자료에 접근할 수 있는지 확인이 필요하여 접근이 금지됨. |
403.8 | Forbidden | 사이트에 접근하는 것이 허락되지 않거나 서버가 요청사항을 수행하지 않아 접근 거부됨. |
403.9 | Forbidden | 접근금지 (연결된 사용자수 과다). 서버가 BUSY 상태로 요청을 수행할 수 없음. |
403.10 | Forbidden | 설정이 확실하지 않음. 서버 설정에 문제가 있어서 요청을 수행할 수 없음. |
403.11 | Forbidden | 잘못된 암호 입력으로 인한 접근 거부. |
403.12 | Forbidden | Mapper 접근 거부, 클라이언트 인증용 맵 접근 실패 |
404 | Not Found | 서버의 문서를 찾을 수 없음.(파일 및 스크립트) |
405 | Method not allowed | 해당 요청에 명시된 메서드를 사용할 수 없어서 자원에 대한 이용이 거부됨. |
406 | Not Acceptable | 허용되지 않음 (허용 가능한 응답 없음). 클라이언트의 Accept 헤더 필드에 기술된 미디어 타입을 반환할 수 없음. |
407 | Proxy Authentication Required | 프록시 서버 인증 필요 |
408 | Request timeout | 요청 시간이 초과 |
409 | Conflict | 서버가 요청을 처리하지 못하고 충돌이 발생한 상태로, 보통 PUT 요청과 관련이 있으며 다른 버전의 파일 업로드 시 발생 |
410 | Gone | 영구적 사용 불가 |
411 | Length Required | 클라이언트가 필요한 Content-Length 헤더를 포함하지 않아 요청을 처리할 수 없음. |
412 | Precondition Failed | 412 – 요청된 리소스에 대해 충족시킬 수 없는 하나 이상의 선결조건이 실패한 경우 발생 |
413 | Request entity too large | 요청된 자원이 서버가 처리 가능한 최대 크기보다 큼. (HTTP 1.1에서 처음으로 도입) |
414 | Request-URI too long | URI가 너무 길어서 서버가 처리할 수 없음. |
415 | Unsupported media type | 요청이 알려지지 않은 형태임. (HTTP 1.1에서 처음으로 도입) |
5XX | Server Error(서버 오류) | 서버 측의 오류로 인해 요청을 처리할 수 없음. |
500 | Internal Server Error | 서버 내부 오류. |
501 | Not Implemented | 필요한 기능이 서버에 설치되지 않았음. |
502 | Bad gateway | 게이트웨이 상태 나쁨. |
503 | Service Unavailable | 서버가 현재 사용 불가능하거나 과부하 상태인 경우를 나타내는 오류 코드. 서버에서 일시적인 문제가 발생하여 요청을 처리할 수 없는 상황 일반적으로 잠시 후에 다시 시도하면 문제가 해결 |
504 | Gateway timeout | “게이트웨이 시간초과”를 의미. 게이트웨이나 프록시 서버가 요청을 수행하는 동안 업스트림 서버로부터 응답이 오지 않아 발생하는 오류 (HTTP 1.1에서 처음으로 도입) |
505 | HTTP Version Not Supported | 해당 HTTP 버전 미지원 |
크게 HTTP 정의와 HTTP 헤더 및 HTTP 상태코드에 대해 알아 봤습니다.
콘텐츠 내 광고 및 제휴 링크가 포함될 수 있으며, 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.