HTTP 메서드
💡HTTP 메시지 구조
- 시작 라인
- 요청 라인 : 메서드 + 요청 대상 + HTTP 버전
- 상태 라인 : HTTP 버전 + 상태 코드 + 이유 구문
- 필드 라인 (헤더) : 여러 개 있을 수 있음
- 메시지 본문 : 선택적, 데이터 포함
💡HTTP 주요 메서드
| 메서드 | 설명 |
| GET | 자원을 조회 (가장 많이 사용) |
| HEAD | GET과 같지만 응답 본문 제외 |
| POST | 서버가 특정 작업을 처리하도록 요청 (새 자원 생성에 자주 사용) |
| PUT | 자원을 ‘전체’ 수정 (덮어쓰기) |
| PATCH | 자원의 ‘일부’ 수정 |
| DELETE | 자원 삭제 |
| CONNECT | 양방향 연결 시작 |
| OPTIONS | 사용 가능한 메서드/통신 옵션 확인 |
| TRACE | 자원에 대한 루프백 테스트 |
✅ GET / HEAD
- GET : 웹 페이지, 이미지 등 자원 조회
- HEAD : GET과 동일하지만 본문 없음
📌 예시
GET /example-page HTTP/1.1
Host: www.example.com
🔎 응답
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 648
<html>...</html>
✅ POST
- 서버가 특정 작업을 수행하도록 요청
- 주로 새로운 자원 생성에 사용
📌 예시
POST /posting HTTP/1.1
Host: example.com
{
"Id": 1,
"Title": "컴퓨터 네트워크",
"Contents": "중요한 과목이니 끝까지 화이팅!"
}
🔎 응답
HTTP/1.1 201 Created
Location: /posting/1
{
"Id": 1,
"Title": "컴퓨터 네트워크",
"Contents": "중요한 과목이니 끝까지 화이팅!"
}
✅ PUT / PATCH
- PUT : 전체 자원을 교체
- PATCH : 일부만 수정
📌 PUT 예시
PUT /posting/1 HTTP/1.1
Host: example.com
{
"Id": 1,
"Title": "수정된 제목입니다"
}
📌 PATCH 예시
PATCH /posting/1 HTTP/1.1
Host: example.com
{
"Title": "수정된 제목입니다"
}
✅ DELETE
- 특정 자원을 삭제
📌 예시
DELETE /texts/a.txt HTTP/1.1
Host: example.com
HTTP 주요 헤더
💡주요 헤더 정리
| 헤더 | 쓰이는 곳 | 핵심 역할 | 대표 예시 | 비고/자주 묻는 점 |
| Host | 요청 | 요청을 보낼 호스트명(+포트)지정 → 가상 호스팅 구분 | Host: info.cern.ch | HTTP/1.1 필수. 요청 라인의 경로와 합치면 전체 URL 재구성 가능 |
| User-Agent | 요청 | 클라이언트(브라우저/프로그램) 종류·버전·플랫폼 정보 | User-Agent: Mozilla/5.0 (... Firefox/109.0) | 서버가 통계/최적화/호환성 판단에 활용 |
| Referer (오타 아님) | 요청 | 요청을 보낸 페이지의 URL(이전 위치) 알림 | Referer: https://minchul.net/ | 유입 경로 파악·분석. 일부 상황에서 빈 값/생략될 수 있음 |
| Server | 응답 | 응답을 보낸 서버 소프트웨어/OS 정보 | Server: Apache/2.4.1 (Unix) | 보안상 과도한 노출은 줄이기도 함 |
| Allow | 응답 | 해당 리소스가 허용하는 메서드 목록 통지 | Allow: POST, OPTIONS | 주로 405 Method Not Allowed와 함께 옴 |
| Location | 응답 | 리소스의 새 위치 또는 생성된 리소스의 주소 | Location: /posting/1 | 3xx 리다이렉션, 201 Created 때 자주 사용 |
| Date | 요청/응답 | 메시지 생성 일시(UTC) | Date: Tue, 15 Nov 1994 08:12:31 GMT | 표준 형식은 IMF-fixdate(UTC) |
| Content-Length | 요청/응답 | 본문의 바이트 길이 | Content-Length: 648 | 전송 본문 존재 시 필요(단, chunked 전송은 제외) |
| Content-Type | 요청/응답 | 본문 미디어 타입(+문자셋) | Content-Type: text/html; charset=UTF-8 | 서버·클라 모두 본문 해석 기준 |
| Content-Language | 응답(주로) | 본문에 사용된 자연어(국가/지역) | Content-Language: ko-KR | 형식: 언어-국가(예: en-US, en-GB) |
| Content-Encoding | 응답(주로) | 본문에 적용한 압축/변환 방식 | Content-Encoding: gzip | 수신 측이 디코딩해야 실제 본문 획득 |
| Connection | 요청/응답 | 연결 유지/종료 의사 | Connection: keep-alive / Connection: close | HTTP/1.1 기본 지속 연결, 명시로 의사 확인 |
💡요청 메시지에서 주로 쓰는 헤더
1. Host
- 요청이 향하는 도메인명 또는 IP(+포트)가 명시되는 헤더
- 가상 호스팅(한 IP에 여러 사이트 운영) 환경에서 어느 사이트의 리소스를 달라는지 서버가 구분
- Host 헤더와 요청 라인을 조합하면 요청을 보낸 URL을 짐작할 수 있는 경우가 많다.
GET /hypertext/WWW/TheProject.html HTTP/1.1
Host: info.cern.ch
2. User-Agent
- 클라이언트(브라우저/봇/앱)의 제품명·버전·플랫폼 등
- 대응 CSS/JS 선택, 통계 수집, 디버깅·지원 판단
- HTTP 요청 메세지를 보낸 클라이언트의 접속 수단(ex. 웹 브라우저)을 유추할 수 있다.

3. Referer
- 사용자가 어디서 왔는지(직전 페이지 URL)
- 유입 경로 분석, CSRF 방어 보조 검증 등
- 개발 초기 당시 오타로 표기됐던 Referer이 현재까지 사용되고있다. (원래 Referrer이 올바른 표현)
Referer: https://minchul.net/
출처
https://www.hanbit.co.kr/store/books/look.php?p_code=B3079890360
이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접
기술 면접과 실무에 필요한 CS 지식, 한 권으로 끝내자!
www.hanbit.co.kr
이미지 출처
1) User-Agent
https://www.youtube.com/watch?v=N_qURj2Wtn8&ab_channel=%ED%95%9C%EB%B9%9B%EB%AF%B8%EB%94%94%EC%96%B4
'CS > [도서] 이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접' 카테고리의 다른 글
| [네트워크] 5-7. 프록시와 안정적인 트래픽 (3) | 2025.08.26 |
|---|---|
| [네트워크] 5-6. (1) 응용 계층 - HTTP의 응용 (0) | 2025.08.21 |
| [네트워크] 5-5. (1) 응용 계층 - HTTP의 기초 (4) | 2025.08.13 |
| [네트워크] 5-4. (1) 전송 계층 - TCP와 UDP (2) | 2025.08.11 |
| [네트워크] 5-3. (1) 네트워크 계층 - IP (3) | 2025.08.07 |