CGIは、Common Gateway Interfaceの略語です。CGIを介して、クライアントブラウザとサーバー間のデータの相互作用を実現できます。
CGI通信システムは、フロントエンドに表示されるHTMLページと、サーバー上で実行されるcgiプログラムで構成されます。Webクライアントは、関連するhtmlファイルを表示します。これらのファイルは通常/ wwwディレクトリに保存されます。CGIプログラムは通常、.cgiサフィックスが付いたファイルであり、保存パスは通常/ wwwです。
CGI通信システムの構造図は次のとおりです。
ステップ1:WebクライアントがサーバーへのHTTP要求を開始します。
ステップ2:環境変数はデータをCGIプログラムに送信します。
ステップ3:CGI標準出力をパイプラインにリダイレクトすると、サーバーはパイプラインを介してCGI出力データを取得します。
ステップ4:サーバーはHTTP応答の結果をクライアントに送信します。
WebクライアントとサーバーCGIプログラム間の対話のプロセスでは、次の条件を実行する必要があります。まず、GETフォームを解析し、環境変数を確立します。次に、サーバーとCGIプログラム間の通信チャネルを確立し、リダイレクトします。 CGIプログラムの標準出力サーバーへのパイプ読み取りポート。
クライアントがHTTPリクエストを開始すると、ブラウザはサーバーにURLを送信し、サーバーはURLに従ってアプリケーションプログラムをポイントします。サーバーが実行するcgiプログラムは、ブラウザが開始したリクエストによって決まります。各CGIプログラムは1つのユーザー要求のみを処理でき、CGIプログラムプロセスがアクティブ化されると、プロセスに属する環境変数が作成されます。
以下は、フロントエンドページ送信フォームの例です。コードは次のとおりです。
<div class="login">
<form method="post" action="/checklogin.cgi">
<div class="item user"><input type="text" placeholder="请输入用户名" name="username" id="username"/></div>
<div class="item pass"><input type="password" placeholder="请输入密码" name="password" id="password"/></div>
<div class="btn"><button type="submit">登录</div>
</form>
</div>
ユーザー名とパスワードをPOSTを介してchecklogin.cgiプログラムに渡します。クライアントからのユーザーデータはCGIプロセスの標準入力に保存されます。同時に、ユーザーデータの長さはでCONTENT_LENGTHに割り当てられます。環境変数。クライアントはPOSTで送信します。データには対応するMIMEタイプがあり、環境変数CONTENT_TYPEに記録されます。Checklogin.cgiはユーザー名とパスワードの正確さを検証します。検証後、ページは次のようにジャンプします。ビジネスロジック。
CGIプログラムがHTTPサーバーによって呼び出されると、環境変数には、現在のURL、GETパラメーター、クライアントIPアドレス、要求ヘッダーなど、多くの有用な情報が含まれます。関連する環境変数は次のとおりです。
REQUEST_METHOD | サーバーとCGIプログラム間の情報伝達方法 |
クエリ文字列 | GET使用時に送信される情報 |
CONTENT_LENGTH | STDIOでの有効なメッセージ長 |
CONTENT_TYPE | 送信されたメッセージのMIMEタイプを示します |
CONTENT_FILE | Windows HTTPd / WinCGI標準を使用するときにデータを送信するために使用されるファイル名 |
PATH_INFO | パス情報 |
PATH_TRANSLATED | CGIプログラムのフルパス名 |
SCRIPT_NAME | と呼ばれるCGIプログラムの名前 |
環境変数は、ユーザー情報を保存するメモリ領域です。クライアントがブラウザを介してCGI要求を送信すると、サーバーは対応するローカルのCGIプログラムを探して実行します。CGIプログラムの実行中、サーバーはユーザーの情報を環境変数に保存します。CGIプログラムは、最初にサーバーとCGIプログラム間の情報送信メソッドREQUEST_METHODを照会します。POSTの場合、環境変数のlenからlenデータを取得し、次にプロセスの対応する標準入力に取得します。GETの場合、ユーザーデータは環境変数のQUERY_STRINGにあります。