본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
HTTP POST; POST 메서드
처리할 데이터를 요청 메시지의 본문(body)에 담아 서버로 보내, 대상 자원이 그 데이터를 처리하게 하는 HTTP 요청 메서드
  • 폼 제출, 로그인, 게시글 작성, 파일 업로드처럼 서버의 상태를 바꾸는 요청에 쓴다
  • 데이터가 본문에 실리므로 주소창·서버 접속 로그·브라우저 기록에 남지 않는다. 다만 암호화되는 것은 아니다 — 내용을 보호하려면 HTTPS 를 써야 한다
  • 본문 길이에 표준상 한도가 없어 큰 데이터를 보낼 수 있다
  • 본문 형식은 Content-Type 헤더로 알린다(application/x-www-form-urlencoded, multipart/form-data, application/json 등)
  • 멱등성이 없다. 같은 POST 를 두 번 보내면 글이 두 번 등록될 수 있다. 그래서 브라우저는 새로 고침 때 다시 보낼지 묻는다
  • 응답은 기본적으로 캐시하지 않는다
POST /board/write HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

title=hello&content=world
구분 GET POST
데이터 위치 URL 의 쿼리 문자열 요청 본문
쓰임 자원 조회 데이터 제출·상태 변경
길이 제한 URL 길이에 묶인다 사실상 없다
주소창·로그 노출 노출 노출되지 않음
멱등성·캐시 멱등, 캐시 가능 멱등 아님, 기본 캐시 안 함
  • POST 로 바꾼다고 크로스사이트 요청위조(CSRF)가 막히지 않는다. 공격자가 자동 제출되는 폼을 심으면 피해자 브라우저가 쿠키를 실어 HTTP POST 요청으로 데이터를 본문에 첨부해 보낸다. CSRF 토큰, SameSite 쿠키, 재인증이 대책이다
  • 민감한 값을 GET 쿼리 대신 POST 본문으로 보내면 URL·Referer·로그로 새는 것은 막을 수 있다