웹 개발 중 다음과 같은 의문이 들었습니다.
“브라우저에서 URL을 직접 입력하면 무슨 방식으로 서버에 요청을 보낼까?”
"브라우저 주소창 입력은 무조건 GET 요청일까?"
❗️결론: 브라우저 요청은 무조건 GET만 가능합니다.
브라우저 주소창에 URL을 입력하고 엔터를 치면, 브라우저는 그 URL에 대해 GET 요청을 자동으로 생성합니다.
예: https://example.com/products?category=book&page=2
이 요청은 다음과 같은 HTTP 메시지로 전송됩니다.
GET /products?category=book&page=2 HTTP/1.1
Host: example.com
GET: 요청 방식 (브라우저가 자동 지정)/products?...: 요청 경로와 파라미터 (쿼리스트링)Host: 대상 서버 도메인사용자가 주소창에 입력하는 것은 GET 요청 외에는 선택지가 없습니다.
HTTP에는 여러 요청 방식이 있지만, 브라우저 주소창은 오직 GET만 사용합니다.
| 요청 방식 | 주소창에서 사용 가능? | 설명 |
|---|---|---|
| GET | ✅ 가능 | 브라우저 주소창, 링크 클릭, 기본 요청 |
| POST | ❌ 불가 | 폼 제출 또는 JavaScript 필요 |
| PUT | ❌ 불가 | JavaScript 필요 |
| DELETE | ❌ 불가 | JavaScript 필요 |
GET 방식은 데이터를 쿼리스트링으로 보냅니다.
예: https://example.com/search?keyword=apple
이 URL을 통해 keyword=apple이라는 데이터를 서버에 전달할 수 있습니다.
하지만 이 데이터는:
HTTP 스펙상 “GET 요청에 body를 허용하지 말라”는 강제 조항은 없습니다.
하지만 대부분의 브라우저와 서버는 GET 요청에 포함된 body를 무시하거나 거부합니다.
// 예시 (비추천)
fetch("/search", {
method: "GET",
body: JSON.stringify({ keyword: "apple" })
});
| 항목 | GET 방식 | 특징 |
|---|---|---|
| 데이터 노출 | ✅ | URL에 그대로 보임 |
| 캐싱 가능성 | ✅ | 브라우저가 이전 요청 결과를 저장할 수 있음 |
| 즐겨찾기 등록 | ✅ | URL이 고정되어 가능 |
| 보안 정보 전송 | ❌ | ID/PW 같은 민감 정보 전송 금지 |
로그인이나 개인정보 제출 등 민감한 작업은 절대 GET 요청으로 하면 안 됩니다.