HTTP(HyperText Transfer Protocol)
HTTP(하이퍼텍스트 전송 프로토콜)는 웹 상에서 데이터를 주고받기 위한 표준 프로토콜입니다. HTTP는 다양한 메서드를 정의하여 서버와 클라이언트 간의 통신을 처리합니다. 각 메서드는 특정 작업을 수행하도록 설계되어 있습니다.
Request
클라이언트에서 서버로 전송되는 요청에는 요청 방법, 요청 헤더, 요청 데이터 등이 있습니다.
Request Method
클라이언트는 다양한 방법으로 정보를 요청할 수 있습니다
이름 | 역할 |
GET | 서버에게 데이터를 달라는 요청(열람)할 때 사용 |
HEAD | GET과 유사하지만, 서버가 응답할 때 Body 없이 Header만을 반환 |
POST | 서버에게 데이터를 전송하는 요청에 사용 |
PUT | 서버에서 요청 URI의 데이터를 수정하거나 새로 추가하도록 요청할 때 사용 |
PATCH | 서버의 데이터를 일부 수정할 때 사용 |
DELETE | 서버에서 요청 URI의 데이터를 삭제하도록 요청할 때 사용 |
TRACE | 클라이언트로부터 수신한 요청을 응답에 포함시켜서 전달하며, 주로 디버깅 용도로 사용
|
OPTIONS | 서버에서 특정 데이터가 어떤 Method를 지원하는지 알아볼 때 사용 |
CONNECT | 록시를 통해 연결을 설정하기 위해 사용 |
Request Header
요청 헤더 | 설명 |
Accept | 클라이언트가 수락할 수 있는 파일 유형 |
Authorization | 서버에 대해 클라이언트 자신을 인증하는 경우 |
User-agent | 클라이언트 소프트웨어의 이름 및 버전 |
Referer | 링크에서 사용자가 클릭한 문서의 URL |
Host | 요청된 리소스의 인터넷 호스트 및 포트 번호 |
Request Data
POST 또는 PUT 요청을 할 때, 클라이언트는 요청 헤더 다음에 빈 줄을 두고 데이터를 서버로 전송할 수 있습니다. GET 또는 HEAD 요청의 경우에는 전송되는 데이터가 없으며, 클라이언트는 서버의 응답을 기다립니다.
Response
서버의 응답에는 상태 코드, 응답 헤더, 응답 데이터 등이 있습니다.
Response Status Code
클라이언트가 서버에 요청을 보내면, 서버는 세 자리 숫자로 이루어진 상태 코드와 함께 응답합니다.
상태코드 | 설명 |
1xx (Informational) | 예비적 응답 |
2xx (Success) | 성공적 트랜잭션 |
3xx (Redirection) | 리디렉션 |
4xx (Client Error) | 클라이언트 오류 |
5xx (Server Error) | 서버 오류 |
일반적인 HTTP 상태 코드 중 몇 가지는 다음과 같습니다
상태코드 | 설명 |
200 OK | 전송이 성공하였고 오류가 없음 |
302 Found | 리디렉션 새 URL로 이동해야 함 |
304 Not Modified | 로컬 캐시 사용 서버의 사본이 브라우저의 캐시와 동일하거나 더 최신일 때 사용 |
401 Unauthorized | 인증 안 됨 사용자가 유효한 인증 정보를 제공하지 않음 |
403 Forbidden | 금지됨 해당 URL에 액세스 권한이 없음 |
500 Internal Server Error | 서버 오류. 서버 관련 오류가 발생함 |
Response Header
응답 헤더 | 설명 |
Server | 웹 서버의 이름 및 버전 |
Date | 현재 날짜 (그리니치 표준시) |
Last-modified | 문서가 마지막으로 수정된 날짜 |
Expires | 문서가 만료되는 날짜 |
Content-length | 전송되는 데이터의 길이 (바이트) |
Content-type | 전송되는 데이터의 MIME 유형 |
WWW-authenticate | 인증 동안 사용되며 클라이언트 소프트웨어에 필요한 인증 정보를 알리는 정보 |
Response Data
서버의 응답은 헤더 필드 뒤에 빈 줄을 두고 문서 데이터를 전송합니다. 이 데이터에는 클라이언트가 요청한 내용이 포함되어 있습니다.
글을 마치며
주요 Method
GET
데이터를 서버로부터 요청하거나 조회할 때 사용하며, 주로 데이터를 가져오는 데 활용됩니다.
POST
서버에 데이터를 제출하고, 제출된 데이터로 새로운 리소스를 생성할 때 사용합니다. 주로 폼 데이터 전송이나 파일 업로드에 활용됩니다.
PUT
서버에 새로운 리소스를 생성하거나, 기존 리소스를 업데이트할 때 사용합니다. 전체 엔터티를 업로드하며, 이미 존재한다면 완전히 대체합니다.
PATCH
리소스의 부분적 업데이트를 요청할 때 사용하며, 리소스의 일부분만 업데이트합니다.
DELETE
서버에서 리소스를 삭제할 때 사용하며, 해당 리소스를 삭제하도록 서버에 요청합니다.
기타 Method
HEAD
GET 메서드와 유사하지만, 응답 본문을 포함하지 않고 헤더만 반환합니다. 주로 리소스의 메타데이터를 확인할 때 사용합니다.
OPTIONS
서버에 특정 리소스에 대한 허용 가능한 메서드를 요청하고, 서버가 해당 리소스에 대해 어떤 메서드를 지원하는지 확인합니다.
CONNECT
목적 리소스로의 터널을 설정할 때 사용하며, 일반적으로 프락시와 함께 사용되어 TLS/SSL 암호화된 연결을 설정합니다.
TRACE
원격지 서버에 루프백 테스트를 수행하기 위해 사용되며, 클라이언트에서 서버까지의 경로를 따라가며 중간의 프락시나 게이트웨이가 요청을 어떻게 처리하는지 확인합니다.