HTTP メソッドとパラメータ

前提ページ:HTTPHTTP ヘッダ
推奨ページ:クライアントサーバモデル

セキュアな Web サイトの作り方を学ぶ上で、Web サイトがどのように通信をしているかを知ることは重要です。このページでは Web 上の通信で利用される HTTP(S)のメソッドについて学びます。


HTTP メソッド

HTTP メソッドとは、アクセスしたいサーバ上のリソース(ファイル等)に対して、どのような操作をしたいのかを表すものです。

HTTP メソッドの有名所

メソッド 意味
GET リソースの取得
POST リソースの追加
PUT リソースの更新
PATCH リソースの更新
DELETE リソースの消去

サーバへのデータの送信

Web アプリケーションでは、クライアントがサーバに対して、なにか情報を伝えたい場合があります。 例えばショッピングサイトでは、ユーザが何をカートに入れて、何を注文確定させたか、ブラウザがサーバに対して伝える必要があります。

リクエスト パラメータ(クエリストリング / GET パラメータ)

主に GET メソッド で利用されるパラメータです。 URL の最後にキーとそれに対する値を入れて、サーバに伝えます。

URL 例

  • http://127.0.0.1?key1=value1&key2=value2
  • http://127.0.0.1?name=fizz

リクエスト パラメータを送信する HTML 例

<!DOCTYPE html>
<html lang="ja">
  <head>
    <!-- headで囲まれた部分は見えない -->
    <meta charset="UTF-8" />
    <title>Hello</title>
  </head>
  <body>
    <!-- 見出し -->
    <h1>What's your name?</h1>
    <!-- 文字 -->
    <form action="hello.php" method="get">
      <input name="name" type="text" />
      <input type="submit" value="submit" />
    </form>
  </body>
</html>

受け取る PHP 例

<!DOCTYPE html>
<html lang="ja">
  <head>
    <!-- headで囲まれた部分は見えない -->
    <meta charset="UTF-8" />
    <title>Hello</title>
  </head>
  <body>
    <!-- 見出し -->
    <h1>
      Hello,
      <!-- ここでGETパラメータを受け取ってそのまま表示 -->
      <?php echo $_GET['name']?>.
    </h1>
    <!-- 文字 -->
    <p>I'm akakou.</p>
  </body>
</html>

送信する HTTP リクエスト例

GET /hello.php?name=neko HTTP/1.1
Host: localhost:4002
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Referer: http://localhost:4003/
Accept-Encoding: gzip, deflate, br
Accept-Language: ja,en;q=0.9

POST パラメータ

主に POST メソッド で利用されるパラメータです。 HTTP リクエストボディにパラメータを入れます。

リクエスト パラメータを送信する HTML 例

<!DOCTYPE html>
<html lang="ja">
  <head>
    <!-- headで囲まれた部分は見えない -->
    <meta charset="UTF-8" />
    <title>Hello</title>
  </head>
  <body>
    <!-- 見出し -->
    <h1>What's your name?</h1>
    <!-- 文字 -->
    <form action="hello.php" method="post">
      <input name="name" type="text" />
      <input type="submit" value="submit" />
    </form>
  </body>
</html>

受け取る PHP 例

<!DOCTYPE html>
<html lang="ja">
  <head>
    <!-- headで囲まれた部分は見えない -->
    <meta charset="UTF-8" />
    <title>Hello</title>
  </head>
  <body>
    <!-- 見出し -->
    <h1>
      Hello,
      <!-- ここでGETパラメータを受け取ってそのまま表示 -->
      <?php echo $_POST['name']?>.
    </h1>
    <!-- 文字 -->
    <p>I'm akakou.</p>
  </body>
</html>

送信する HTTP リクエスト例

neko という名前を設定した場合、以下のような HTTP リクエストが送信されます。

POST /hello.php HTTP/1.1
Host: 127.0.0.1:4001
Connection: keep-alive
Content-Length: 9
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Referer: http://127.0.0.1:4001/
Accept-Encoding: gzip, deflate, br
Cookie: _ga=GA1.1.11882848.1574929583; _ga_J5E5G995V7=GS1.1.1574933002.2.1.1574936118.0

name=neko