CGIプログラムとWeb間のデータ相互作用

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にあります

おすすめ

転載: blog.csdn.net/weixin_38293850/article/details/108056184
おすすめ