POSTメソッド
HTTPで、サーバにデータを送って処理させるときに使うメソッド。送るデータは、リクエストのメッセージボディに入れる。
イマシルちゃんの解説
掲示板への投稿などでは、サーバへ内容を渡して処理してもらう必要があるよね。
そんな要求に使うHTTPメソッドがPOSTなんだ。
メソッドは、サーバにどんな処理を求めるかを示すものだよ。
投稿する文章などは、リクエストのメッセージボディという本文部分に入れて送るの。
サーバは受け取った内容を登録するなど、送り先に応じた処理をするよ。
この部分のデータはURLに載せずに送れるけれど、POSTのURLにも条件などを付けられるんだ。
POST自体に暗号化の働きはないから、パスワードなどを送るときはHTTPSも必要だよ。
この解説はわかりやすかったですか?
より深い解説
定義
POSTは、HTTPのリクエストで、送ったデータをサーバに処理させるメソッドである。データは、ヘッダーの後の空行に続くメッセージボディに入れる。
POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
user=glatch&password=secret
データの形式(Content-Type)
| Content-Type | 使われる場面 |
|---|---|
| application/x-www-form-urlencoded | 普通のHTMLフォーム。キー=値 を「&」でつなぐ |
| multipart/form-data | ファイルのアップロードを含むフォーム |
| application/json | Web APIでJSONを送るとき |
POSTの性質
- べき等ではない:同じリクエストを2回送ると、注文が2回入る、書き込みが2件になる、といったことが起こりうる
- キャッシュされない:原則として、応答はブラウザやプロキシに保存されない
- URLに残らない:データがボディに入るため、履歴やアクセスログ、Refererヘッダーに残りにくい
二重送信の防止
POSTの後にブラウザで再読み込みをすると、同じデータがもう一度送られる。これを防ぐ定番の方法がPRG(Post/Redirect/Get)パターンである。POSTを受けたサーバが処理の後で別のURLへのリダイレクト(303 See Other など)を返し、ブラウザはそのURLをGETで取り直す。こうすると、再読み込みしてもGETが繰り返されるだけになる。
注意点
POSTでもHTTPのままでは通信路上で中身を見られるため、パスワードなどを送るときは必ずHTTPSを使う。POSTは「暗号化」ではなく、「データをURLに載せない」だけである。
実際の試験ではここに出る!全1問
ネットワークスペシャリスト
- 午前Ⅱ