トップページに戻る

Category

AllArchives

Checker

Credit

初級CGIクラックガイド(4)

IE等を使ってブラウジングを行う時・Irvine等を使ってhttpダウンロードを行う時・・・に裏で行われている「リクエスト」。telnet等を使えばマニュアルで行うことができる「リクエスト」。
クライアント(=閲覧者)側から見て、「リクエスト」の一般形は以下です。
リクエストコマンド(メソッド) リクエスト対象 HTTPのバージョン
環境変数群
(改行)
標準入力

「リクエストコマンド(メソッド)」は一般的に「GET」「POST」の二種類。
「リクエスト対象」は「/index.html」だったり「/himitsu_hoshi.jpg」だったり「/bbs.cgi」だったり「/bbs.cgi?myname=tokix&content=hello」だったり。
「HTTPのバージョン」は「HTTP/1.0」とか「HTTP/1.1」とか。
「標準入力」は「超初級CGIクラックガイド」で「裏で送信されるデータ」と誤魔化した箇所です。IE等ブラウザを使ってmethod=postなformからCGIを実行した場合、「送信するデータ」はここに記載されます。
参考: 超初級CGIクラックガイド(5)

例を三つほど挙げておきます。
□普通のhtmlページをハイパーリンクで開く場合の例
GET /about.html HTTP/1.1
Referer: http://www.tokix.net/
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: www.tokix.net
Connection: Keep-Alive
□CGIを(GETメソッドにより)環境変数query_stringつきで実行する場合の例
GET /bbs.cgi?myname=tokix&content=hello HTTP/1.1
Referer: http://www.tokix.net/
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: www.tokix.net
Connection: Keep-Alive
□CGIを(POSTメソッドにより)標準入力つきで実行する場合の例
POST /bbs.cgi HTTP/1.1
Referer: http://www.tokix.net/
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: www.tokix.net
Connection: Keep-Alive

myname=tokix&content=hello
上記三者を「同じモノ」として捉えることができたでしょうか?上記三者の違いというのは「リクエスト(=入力)内容の差」に過ぎない、と。

ここから本題に移ります。上記のようなリクエストの「形式」というのは、どこまで閲覧者の制御下にあるのか。
  • リクエストコマンド
    閲覧者の制御下にありますが、「KURE」とかにしてもサーバーが解釈してくれません。リクエストコマンドはRFCという世界統一規格で決まってます。
    参考: Studying HTTP内「リクエスト
  • リクエスト対象
    完全に閲覧者の制御下にあります。例えば「/YouAreFat」とかリクエストしたらサーバー内に「『/YouAreFat』とリクエストされたけどどうすりゃいいのか分からなかったよ」という意味のエラーログが残るでしょうね。また、「?」以降はCGIから環境変数query_stringとして参照されます。
    参考: 超初級CGIクラックガイド(3)
  • HTTPバージョン
    閲覧者の制御下にありますが、「sya-senyou」とかにしてもサーバーが解釈してくれません。リクエストコマンドと同じく、RFCという世界統一規格があります。
  • 環境変数群
    完全に閲覧者の制御下にあります。「完全に」です。次回書きます。
  • 標準入力
    完全に閲覧者の制御下にあります。
・・・何が言いたいのか。
「これが『リクエストの例』ですよ」と書くと、「あぁそうか、この形式通りにリクエストしなくちゃいけないのか」と思う人が多いと思うのですよ。それは違います。上記のように「リクエスト内容」は基本的に全て閲覧者の制御下にあります。
「環境変数」に関しても同じです。よく「環境変数には***と***と***があり、こうした情報がサーバーに伝わるのです」という論調な解説を見ることがあるでしょう。アレはある意味では正しいが、ある意味では間違っている。

SeeAlso

SameSubCategory

Footprint

Navigation

TrackBack

この記事へのトラックバック

Comment

PostForm

情報を登録  
コメントは本文以外省略可能で、当方の承認後掲載されます