번역 작업 진행중입니다.

HTTP POST method 는 데이터(data)를 서버로 보내는 방법 중 하나입니다. request의 body 타입은 Content-Type 헤더(header)에 따라 결정됩니다.
 
PUT과 POST의 차이점으로, PUT은 멱등성을 가집니다. 즉 PUT은 한 번 또는 연속적으로 몇번을 보내도 똑같은 효과를 가져옵니다.(side effect가 없습니다.). 반면, 같은 POST를 연속적으로 보낸다면 명령을 여러번 내린것처럼 부가적인 효과를 가져올 것입니다.
 

POST request는 보통 HTML form 을 통해서 서버에 전송하고 서버상에 변경사항을 만듭니다. 이 경우에는, content type은 <form> 요소의 enctype 속성이나 <input> 또는 <button> 요소의 formenctype 속성안에 적당한 스트링을 넣어 결정합니다.

  • application/x-www-form-urlencoded: &으로 분리되고, "=" 기호로 값과 키를 연결하는 key-value tuple로 인코딩되는 값입니다. 영어 알파벳이 아닌 문자들은 percent encoded 으로 인코딩됩니다. 따라서, 이 content type은 바이너리 데이터에 사용하기에는 적절치 않습니다. (바이너리 데이터에는 use application/form-data 를 사용해 주세요.)
  • application/form-data
  • text/plain

POST request를 HTML form이 아닌 XMLHttpRequest와 같은 다른 method로 전송할 때, request의 body는 어떤 타입이라도 취할 수 있습니다. HTTP 1.1 규격에 정의된 바와 같이, POST는 다음의 기능들을 포함하는 균일한 method를 허용하도록 설계되었습니다.

  • 기존 리소스에 주석달기
  • BBS 게시판, 뉴스그룹, 메일링 리스트나 이와 유사한 시스템에 글 올리기
  • form 전송 결과 등과 같은 데이터 블럭을 데이터 핸들링 프로세스에 보내기
  • 추가 연산을 통한 데이터베이스 확장
Request has body Yes
Successful response has body Yes
Safe No
Idempotent No
Cacheable 새 정보가 포함되었을 때만
Allowed in HTML forms Yes

Syntax

POST /index.html

Example

application/x-www-form-urlencoded content type 을 사용하는 간단한 형태의 Form 입니다.

POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13

say=Hi&to=Mom

multipart/form-data content type 을 사용하는 Form 입니다.

POST /test.html HTTP/1.1 
Host: example.org 
Content-Type: multipart/form-data;boundary="boundary" 

--boundary 
Content-Disposition: form-data; name="field1" 

value1 
--boundary 
Content-Disposition: form-data; name="field2"; filename="example.txt" 

value2

Specifications

Specification Title
RFC 7231, section 4.3.3: POST Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

See also

문서 태그 및 공헌자

 이 페이지의 공헌자: AngelaMIN, sephiron99, dbwodlf3
 최종 변경: AngelaMIN,