--- title: POST slug: Web/HTTP/Methods/POST tags: - HTTP - Reference - Request method translation_of: Web/HTTP/Methods/POST ---
{{HTTPSidebar}}

HTTP POST 메서드는 서버로 데이터를 전송합니다. 요청 본문의 유형은 {{httpheader("Content-Type")}} 헤더로 나타냅니다.

{{httpmethod("PUT")}}과 POST의 차이는 {{glossary("idempotent", "멱등성")}}으로, PUT은 멱등성을 가집니다. PUT은 한 번을 보내도, 여러 번을 연속으로 보내도 같은 효과를 보입니다. 즉, 부수 효과(side effect)가 없습니다.

POST 요청은 보통 HTML 양식을 통해 서버에 전송하며, 서버에 변경사항을 만듭니다. 이 경우의 콘텐츠 유형(Content-Type)은 {{HTMLElement("form")}} 요소의 {{htmlattrxref("enctype", "form")}} 특성이나 {{HTMLElement("input") }}, {{HTMLElement("button")}} 요소의 {{htmlattrxref("formenctype", "input")}} 특성 안에 적당한 문자열을 넣어 결정합니다.

POST 요청을 HTML 양식 외의 다른 방법({{domxref("XMLHttpRequest")}} 등)으로 전송할 땐 요청의 본문이 어떤 형태도 취할 수 있습니다. HTTP 1.1 규격에 정의된 바와 같이, POST는 다음의 기능을 포함하는 균일한 메서드를 허용하도록 설계되었습니다.

요청에 본문 존재
성공 응답에 본문 존재
{{Glossary("Safe", "안전함")}} 아니오
{{Glossary("Idempotent", "멱등성")}} 아니오
{{Glossary("Cacheable", "캐시 가능")}} 신선도 정보 포함 시
HTML 양식에서 사용 가능

구문

POST /index.html

예제

다음은 application/x-www-form-urlencoded 콘텐츠 유형을 사용하는 간단한 형태의 양식 제출 예시입니다.

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

say=Hi&to=Mom

multipart/form-data 콘텐츠 유형을 사용하는 예시입니다.

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
--boundary--

명세

Specification Title
{{RFC("7231", "POST", "4.3.3")}} Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
{{RFC("2046", "Common Syntax", "5.1.1")}} Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types

브라우저 호환성

{{Compat("http.methods.POST")}}

같이 보기