HTTP는 클라이언트가 자원을 요청하고 서버가 응답하도록 정한 애플리케이션 계층의 통신 규약이다. 웹 문서뿐 아니라 이미지, 파일, API 응답을 전달하며, 요청의 목적과 결과를 메서드·상태 코드·헤더로 표현한다. MDN HTTP 개요
요청과 응답의 구성
요청에는 GET이나 POST 같은 메서드, 대상 경로, 헤더와 필요에 따른 본문이 들어간다. 응답에는 상태 코드, 헤더, 선택적인 본문이 있다. 브라우저가 HTML을 받은 뒤 CSS와 이미지를 별도로 요청하므로 페이지 하나를 여는 행동도 여러 통신으로 이어진다. Fetch API는 자바스크립트에서 이런 요청을 만드는 인터페이스다. HTTP 의미 표준
문서 조회 예시
위키에서 /ko/wiki/http를 조회하는 상황을 생각할 수 있다.
| 요소 | 예시 | 의미 |
|---|---|---|
| 메서드 | GET | 문서 표현을 요청 |
| 성공 응답 | 200 | 요청 처리 결과를 본문으로 전달 |
| 응답 형식 | Content-Type | 본문이 HTML인지 JSON인지 설명 |
주소가 같아도 언어나 인증 상태에 따라 다른 응답이 나올 수 있다. 개발자 도구의 네트워크 탭에서는 주소만 보지 말고 요청 헤더와 실제 응답을 함께 확인한다.
무상태와 세션의 관계
HTTP 자체는 앞선 요청의 로그인 상태를 자동으로 기억하지 않는다. 서비스는 쿠키나 토큰 등으로 사용자를 식별하고 별도의 상태를 관리한다. 연결을 재사용한다는 것과 사용자 세션이 유지된다는 것은 서로 다른 개념이다.
전송 보호와 캐시
HTTP 응답을 재사용하는 규칙은 HTTP 캐싱에서 다루며, 통신을 보호하는 HTTPS는 HTTP의 의미 위에 암호화된 전송을 제공한다. 성공 상태 코드를 받았다고 업무 처리가 항상 기대대로 끝난 것은 아니다. 예를 들어 접수만 완료한 비동기 요청은 이후 작업 상태까지 확인해야 한다.