| CGIは、サーバーが設定する環境変数、フォームを経由して送られるデータ、クッキーなどを利用する事で実に多様な作業を行う事が可能です。
このページではCGIが利用できる環境変数、フォーム、クッキーとその値を表示しています。
|
| SERVER | ||
|---|---|---|
| GATEWAY_INTERFACE | CGI/1.1 | このサーバーの使用しているCGIのバージョン。詳細は、
http://hoohoo.ncsa.uiuc.edu/cgi/ |
| SERVER_ADMIN | webmaster@hpcgi.nifty.com | |
|
このサーバーの管理者のMailアドレス |
||
| SERVER_NAME | hpcgi1.nifty.com | |
|
サーバーのドメイン名、わからなければIPアドレスが入ります。 |
||
| SERVER_SOFTWARE | ZWS | サーバーの種類が分かります。 |
| SERVER_PORT | 80 | TCPポート・・通常は80 |
| SERVER_PROTOCAL | 値なし | World Wide Webで使用されるプロトコルでCGIがちゃんと動くのはこれがHTTPプロトコルだからです。 |
| SCRIPT_FILENAME | /cgi-bin/ENV_FORM.cgi | |
|
このサーバーのファイル構成におけるこのCGIのパスを表示します。したがってhttpなどで示されるドキュメントルートとは異なります。 |
||
| SCRIPT_NAME | /Iruka/ENV_FORM.cgi | |
|
ドキュメントルートにおけるこのCGIのパスで、再度このCGIを呼び出すときに使用できるのはこちらです。
|
||
| PATH | /bin: /usr/bin: /usr/local/bin | |
|
このCGIが利用できるプログラムを探しに行くディレクトリが記述されます。 |
||
| PATH_INFO | 値なし | URL***?abc=def・・と言うふうにURLの次の?以降に続くQUERY_STRINGの間に色々なデータを付ける事ができます。それがあればエンコードして表示されます。通常はなし |
| DOCUMENT_ROOT | /cgi-bin | |
|
HTTPプロトコルで渡されるドキュメントへのルート |
||
| PATH_TRANSLATED | 値なし | |
上記のPATH_INFOとDOCUMENT_ROOTを一緒にした物です。次のような場合に使用します。 |
||
| HTTP REQUEST HEADER (ここからは訪問者側のデータ(リクエスト)です。) | ||
| AUTH_TYPE | Basic | 認証の方式、UNIXのMOSAIC以外はBASICのはず。認証ページにアクセスする場合に使用されます。
詳細 |
| CONTENT_LENGTH | 値なし | POSTやPUTメソッドでデータが送られるときに、そのデータの大きさを示します。 |
| REQUEST_METHOD | GET | CGIへデータの渡し方 |
| CONTENT_TYPE | 値なし | |
aplication/x-www-form-urlencoded |
||
| QUERY_STRING | 値なし | |
|
||
| REMOTE_ADDR | 38.107.179.240 | |
|
||
| REMOTE_HOST | 38.107.179.240 | |
上記と同じく、PPPやDHCP接続の場合は接続のたびに変わる事があります。 |
||
| REMOTE_IDENT | 値なし | |
|
||
| REMOTE_USER | 値なし | |
|
||
| HTTP REFERER | ||
| HTTP REFERER | 値なし | |
|
このページへリンクしてきた元のページ。いたずらを防止するためにきわめて有功ですがすべてのブラウザがこれを送るわけではない事に注意が必要です。
なお、直接このURLをよばれた場合は再度下記をクリックしてください。 http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi |
||
| HTTP_USER_AGENT | CCBot/1.0 (+http://www.commoncrawl.org/bot.html) | |
|
||
| HTTP_ACCEPT | text/html, application/xhtml+xml, text/xml;q=0.9, text/plain;q=0.8, image/png, */*;q=0.5 | |
| ブラウザが理解できるMIMEタイプ | ||
| HTTP_ACCEPT_CHARSET | ISO-8859-1,utf-8;q=0.7,*;q=0.7 | |
| ブラウザが理解できる文字コード | ||
| HTTP_ACCEPT_LANGUAGE | en-us, en;q=0.5 | |
| ブラウザが理解できる文字コード | ||
| HTTP_FROM | 値なし | |
| HTTP_IDENT | 値なし | |
| STDIN(標準入力) (URL encorded) |
|
|---|---|
| これは環境変数ではなくて、標準入力から受け取るデータで、REQUEST_METHODがPOSTとPUTの場合に
その値があります。 ここに表示されるデータは下記スクリプトでエンコード済みです。 read(STDIN, $buffer, $CONTENT_LENGTH);
$buffer =~ tr/+/ /;
$buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$buffer =~ s/\n//g;
$buffer =~ s/\r//g;
|
|
| <STDN>標準入力 | |
| $ENV{'QUERY_STRING'} | |
| PATH_INFO | データは、PATH_INFOで渡すこともできます。動的にページを作成するときや部分識別子(#以降のページ内アンカー)を使うときは、標準入力かPATH_INFOを使います。PATH_INFOのデータ | 値なし |
| 値なし | |
| このCGIを呼び出した後、そのURLの後ろに名前と値を~でつないで、それを/で区切る。 例) http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/name~tanaka/sex~male |
|
| FORM | |||
|---|---|---|---|
| フォームの送信結果をテストしてみましょう。 | |||
| こちらはPOST・・標準入力で送信されます。 | こちらはGET・・URLの一部として送られます。 | ||
|
|||
COOKIE(クッキー) |
|||
|---|---|---|---|
| このページに来られたとき、このページ(SCRIPT_NAME)に一致するクッキーがあればその値はブラウザからHTTPヘッダーに加えて送信され、サーバーの環境変数に取り込まれます。
このクッキーは原則として、サイズは4kb以下、一つのドメインに対して20個以下、クライアントで保存できるクッキーは最大300個までという制限があります。 したがって一つのクッキーの4Kb以下にできるだけ多くの情報を組み込む工夫が必要になります。 |
|||
| $ENV{'HTTP_COOKIE'} | |||
|
このCGIのURLを直接呼び出した場合やクッキーを消去した場合、クッキーがありません。
下をクリックするとクッキーが確認できます。 |
|||
|
クッキーの設定と確認
このCGIが受け取れるすべてのクッキーの消去 | このCGIが発行したクッキーの消去
|
|||
| 38.107.179.240のクッキーから・・ | COOKIE NAME | COOKIE VALUE |
|---|
認証が必要なページの各ページにアクセスするときに移動するたびに認証を求められる事はありません。たとえばBASICと言う方法の場合は、サーバーがWWW-Authenticate応答ヘッダを送り、ブラウザはAuthorization要求ヘッダを(Authorization: Basic ahrkjwgtkhksil+kiw)と言う形で返します。認証されるとブラウザは次のページに進むとき認証確認(Basic cookie)をつけてファイルを要求するため、1ページ毎にIDやパスワードを要求される事はありません。(パソコンから離れるときは、ブラウザを閉じましょう。)