--- 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")}} 属性に適切な文字列を設定することでコンテンツタイプを選択します。
application/x-www-form-urlencoded
: キーと値は、その間に '='
がある形でキーと値の組になり、 '&'
で区切られてエンコードされます。キーや値の英数字以外の文字は、{{glossary("percent-encoding", "パーセントエンコーディング")}}されます。このため、このタイプはバイナリデータを扱うのには向きません (代わりに multipart/form-data
を使用してください)multipart/form-data
: それぞれの値はデータのブロック ("body part") として送信され、ユーザーエージェントが定義するデリミター ("boundary") がそれぞれの部分を区切ります。キーはそれぞれの部分の Content-Disposition
ヘッダーの中で与えられます。text/plain
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")}}