HTTPでの引数の受け渡し(受け渡し方法)


 CGIプログラムに対して引数を与えたい場合があります.
 このような場合のために,HTTPではURLに引数を渡す方法が用意されています.
 引数を渡す方法は,HTTPのコマンドにより異なります.

引数の受け渡し(GET)

 GETの場合は,下の図のようにヘッダ部のみが送られます.


 ヘッダ部           
 区切り(空の行)

 このため,URLに引数を記述します.

 引数は,以下のように,URLの最後に ? をつけて記述します.

http://www.test.org/index.html?1234

 また,引数も複数の値を引き渡すことが多いことから,

http://www.test.org/index.html?abc=1234&def=5678

のように,? 以降に複数の引数を 変数名= という形式で & で区切って記述します.
 実際の例では,HTMLを以下のように記述し,

<BODY>
  <A HREF='index.html?abc=1234&def=5678'>Click!</A>
</BODY>

Clck! というリンクをクリックすると,以下のようなデータがサーバに送られます.

GET /index.html?abc=1234&def=5678 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: www.test.org
Connection: Keep-Alive

ヘッダ部
区切り

 ここの記述に関しては,ここでもっと詳しく説明します.

引数の受け渡し(POST)

 POSTの場合は,下の図のようにデータ部があります.そこで,引数は,このデータ部に入れて送られます.


 ヘッダ部           
 区切り(空の行)

 データ部

 実際の例では,HTMLを以下のように記述し,

<BODY>
  <FORM ACTION='index.html' METHOD='POST'>
  <INPUT TYPE='hidden' NAME='abc' VALUE='1234'>
  <INPUT TYPE='hidden' NAME='def' VALUE='5678'>
  <INPUT TYPE='submit' VALUE=Click!'>
</BODY>

Clck! というボタンをクリックすると,以下のようなデータがサーバに送られます.

POST /index.html HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: www.test.org
Connection: Keep-Alive

ヘッダ部

区切り

abc=1234&def=5678

データ部