웹의 동작 원리 — 데이터를 어떻게 실어 보내는가
"GET 은 보여줘, POST 는 저장해줘 정도로구나."
그런데 — 둘 다 "데이터를 보낸다"는 점은 같은데, 실제로 뭐가 다를까요? 비밀번호를 입력했는데 URL 에 보이면 큰일 아닌가요?
같은 편지를 부치더라도 엽서는 겉에 글자가 그대로 보이고, 봉투는 안에 넣어 봉인합니다.
이메일 검색 폼을 GET 으로 제출하면:
GET /search?q=spring&page=2 HTTP/1.1
Host: example.com
(바디 없음)
?q=spring&page=2 부분이 URL 안에 그대로 적혀 있습니다.
같은 검색을 POST 로 제출하면:
POST /search HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 14
q=spring&page=2
URL 은 깔끔하고, 데이터는 바디 안에 들어갑니다.
| 항목 | GET | POST |
|---|---|---|
| 데이터 위치 | URL 의 ? 뒤 | 메시지 바디 |
| 길이 제한 | 있음 (브라우저별 ~2KB) | 사실상 없음 |
| 즐겨찾기·공유 | 가능 (URL 만 복사) | 불가 |
| 새로고침 시 | 그냥 다시 요청 | "재제출 하시겠습니까?" |
| 민감한 데이터 | ❌ (URL 노출) | ✅ (바디 숨김) |
| 기본 용도 | 조회 | 제출/생성 |
...?query=spring&... 등이 그대로POST 표시, Payload 탭에 비밀번호가 바디로 들어감을 확인메서드 이름은 알지만 둘이 어떻게 다른지 모름.
데이터가 어디에 실리는지 알고, 회원가입 폼을 GET 으로 보내면 안 되는 이유를 설명할 수 있다.
다음 차시: 무상태성과 쿠키·세션 — 서버가 사용자를 기억하지 못하는 이유와 그 해결책.