--- title: POST slug: Web/HTTP/Methods/POST tags: - HTTP - HTTP リクエストメソッド - Reference - Request method - リファレンス translation_of: Web/HTTP/Methods/POST ---

{{HTTPSidebar}}

HTTP の POST メソッドは、サーバーにデータを送信します。リクエストの本文のタイプは {{HTTPHeader("Content-Type")}} ヘッダーで示されます。

{{HTTPMethod("PUT")}} と POST との違いは、 PUT がべき等であることです。一度呼び出しても複数回呼び出しても成功すれば同じ効果になる (作用がない) のに対して、同じ POST に成功すると、複数回の注文を行うような、追加の効果が出ます。

POST リクエストは、ふつう HTML フォームを介して送信され、サーバーに変化をもたらします。この場合、 {{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 /test

既定の application/x-www-form-urlencoded コンテンツタイプを使用した単純なフォームです。

POST /test HTTP/1.1
Host: foo.example
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

field1=value1&field2=value2

multipart/form-data コンテンツタイプを使用したフォームです。

POST /test HTTP/1.1
Host: foo.example
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--

仕様書

仕様書 題名
{{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")}}

関連情報