질문 133 · 실전 면접 답변
HTTP에서 GET과 POST는 의미, 캐싱, 보안 측면에서 어떻게 다른가요?
이렇게 답해 보세요 (핵심 답변)
GET은 서버 자원의 표현을 조회하는 안전(Safe)하고 멱등(Idempotent)한 메서드이고, POST는 서버가 요청 본문을 받아 생성이나 상태 변경 등을 처리하게 하는 비멱등 메서드입니다. GET은 기본 캐싱이 자연스럽지만 POST는 명시적 캐시 조건이 있어야 캐시할 수 있습니다. 또한 두 메서드 모두 자체 암호화를 제공하지 않으므로, 민감 정보는 URL 노출을 피해 본문으로 보내되 반드시 HTTPS(TLS)와 로그 마스킹 정책을 함께 적용해야 합니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- HTTP 명세에서 GET이 '안전하다(Safe)'는 것은 클라이언트가 서버 상태 변경을 의도하지 않는다는 뜻이지, 서버가 조회 로그나 통계를 한 줄도 기록할 수 없다는 뜻은 아닙니다.
- 네트워크 타임아웃이 났을 때 GET은 그대로 자동 재시도하기 안전하지만, 결제나 주문 생성 POST를 조건 없이 재시도하면 중복 처리가 일어날 수 있습니다.
면접에서 자주 하는 실수
POST는 데이터가 요청 본문(Body)에 들어가니까 HTTPS 없이도 암호화되어 GET보다 본질적으로 해킹에 안전하다고 설명하면 안 됩니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 133번을 바탕으로 질문과 답변을 새로 정리했습니다.