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

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

POST 要求は、ふつう HTML フォームを介して送信され、サーバーに変化をもたらします。この場合、 <form> 要素の enctype 属性もしくは、 <input> 又は <button> 要素の formenctype 属性に適切な文字列を設定することでコンテンツタイプを選択します。

  • application/x-www-form-urlencoded: キーと値は、その間に '=' がある形でキーと値の組になり、 '&' で区切られてエンコードされます。キーや値の英数字以外の文字は、パーセントエンコーディングされます。このため、このタイプはバイナリデータを扱うのには向きません (代わりに multipart/form-data を使用してください)
  • multipart/form-data
  • text/plain

POST 要求が HTML フォーム以外の方法 — XMLHttpRequest など — で送信された場合は、本文はあらゆるタイプを取ることができます。 HTTP 1.1 仕様書で記述されている通り、 POST は以下のような機能をカバーする統一的なメソッドになるよう設計されています。

  • 既存のリソースの注釈
  • 掲示板、ニュースグループ、メーリングリスト、又は同様の記事グループへの投稿
  • サインアップモーダルからの新規ユーザーの追加
  • フォームの送信結果などの結果などにおける、データを扱うプロセスへのデータブロックの受け渡し
  • 追加操作によるデータベースの拡張
要求の本文 あり
成功時の応答の本文 あり
安全性 なし
べき等性 なし
キャッシュ 新鮮情報が含まれている場合のみ
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

仕様書

仕様書 題名
RFC 7231, セクション 4.3.3: POST Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

ブラウザーの対応

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 あり あり あり あり あり あり
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり あり あり あり あり あり

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mfuji09
最終更新者: mfuji09,