Common Gatewayインターフェイス-Wikipedia、無料百科事典

before-content-x4

CGI 共通ゲートウェイインターフェイス ) – 標準化されたインターフェイス。Webサーバーソフトウェアとサーバー上の他のプログラムとの間の通信を有効にします。通常、Webサーバープログラムは、静的HTMLドキュメントをブラウザに送信します。 CGIプログラムの助けを借りて、(顧客の要求に応じて)HTMLドキュメントを生成し、データベースからダウンロードされたコンテンツなどを補完することができます。

after-content-x4

CGIプログラムは、多くの場合、Perlなどの解釈可能な言語で記述されます。 CGIスクリプト

  • 安定した(1995年から変更されていない)、無料の標準で利用可能。
  • CGIの実装は、特定のハードウェア/システムプラットフォームに依存するものではありませんが、特定のWWWサーバープログラムに依存します。人気のあるサーバーのほとんどには、Microsoft Windows(Apache、Netscape、Microsoft IIS)およびMacintosh(Apache、WebStar)プラットフォームで動作するUNIX(Apache、Sun Java System Web Server、NSCA)で動作するサーバーなど、実装されたCGIメカニズムがあります。他の多くのサーバーもCGIインターフェイスを実装しています。
  • 幅広いアプリケーション(アプリケーションを参照)
  • CGIプログラムは、ほぼすべてのプログラミング言語で記述できます。 Perla、PHP、Ruby、TCL、C、C ++、Visual Basic、Applescriptがよく使用されます。 CGIサポートをサポートするライブラリは、これらの言語の多くに対して作成されています。
  • CGIサポートは通常、各リクエストの新しいプロセスの作成に関連しています。これにより、特に解釈された言語の場合、サーバーに大きな負荷がかかります。 FastCGIタイプの加速ソリューションまたは一時的なコンパイルされたバージョンの自動作成が作成されました。

CGIプログラム /スクリプトの適用 [ 編集 | コードを編集します ]

  • ドキュメントをブラウザに送信する前に、ドキュメントを動的に生成する(例:現在の日付)
  • データベース内のデータに基づいてドキュメントを作成し、レコードをフォーマットしてページにコンテンツを表示する
  • 他のソフトウェアから生じるデータのダウンロードとフォーマット(測定デバイスからダウンロードされたデータは、継続的にブラウザに送信できます)
  • 調査とアンケートの生成と処理
  • チャートやスキームなどの動的イラストの作成

CGIプログラムは、サーバーで起動された他のプログラムと実際に違いはないため、エラーや障害の影響を受けやすいためです。ただし、ほとんどの場合、CGIプログラム/スクリプトは「外部」データを受信および処理するため、正確性を注意深く確認することが非常に重要であるためです。ページユーザーが意図したとおりにフォームのすべてのフィールドを入力するという保証はありません。正しいデータまたはプログラム/CGIスクリプトをサーバーに送信しても、クラッカー攻撃にはなりません。これらの理由から、CGIプログラム/スクリプトを作成するときに特定のルールを使用することをお勧めします。

  • アプリケーションの完璧さに特に注意が払われるべきです
  • 外部から受け取ったすべてのデータは、特にサイズ、タイプ、コンテンツのコンプライアンスの観点から徹底的に検証する必要があります
  • CGIプログラム/スクリプトは、比較的低い権限で、または可能であれば孤立したクルー環境で起動する必要があります
  • サーバー管理者は、利用可能なCGIプログラム/スクリプトを厳密に制御する必要があります。このタスクを容易にするために、ほとんどのサーバーでは、特別なカタログにあるプログラムのみを起動できます(通常は CGI-BIN メインサーバーカタログで)

サーバーとCGIプログラム間のデータ交換 [ 編集 | コードを編集します ]

CGI仕様によれば、サーバーとCGIスクリプトとその他の方法との間に明確に定義されたデータ交換パスがあります。仕様によれば、データは2つの形式でCGIスクリプトで使用できます:標準プログラム入力に表示されるデータまたはCGIプログラムを実行するときにサーバーによって作成された特別な環境変数。プログラム/スクリプトの結果は標準出力に送信され、サーバーソフトウェアはさらに処理を提出します。

環境変数 [ 編集 | コードを編集します ]

変数 タイプ 説明
server_software すべての要求に対して作成された変数 CGIプログラムを開始したサーバープログラムに関する情報。形式:名前/バージョン
np。 Apache/1.3.37(Unix)
サーバーの名前 サーバーがdns、aliasu dns、またはIPアドレスの形式で動作するホストの名前
gateway_interface サーバープログラムによって実装されたCGI仕様バージョン。フォーマット:CGI/バージョン
np。 CGI/1.1
server_protocol 特定の要求に応じて作成された変数 顧客からリクエストを受信するときに使用されるプロトコルの名前とバージョン。形式:プロトコル/バージョン
np。 HTTP/1.1
サーバポート リクエストが続いたポート番号。通常80
request_method リクエストが従った方法。 HTTPプロトコルの場合、「get」、「head」、「post」、…
path_info CGIプログラムへのパスに関する追加情報
path_translated CGIへの実際のアクセスパス
script_name 実行されたプログラム/スクリプトの名前
クエリ文字列 サインの後にURLを使用してCGIプログラムに転送されたデータ「?」
リモートホスト リクエストが受信されたホストの名前。取得できない場合、サーバーはremote_addr変数を設定し、無知のままにしておく必要があります
remote_addr リクエストが受信されたホストのIPアドレス
auth_type サーバー上の保護されたドキュメントへのアクセスに対するユーザー承認中に使用される変数。プロトコルとサーバーの構成に依存します
remote_user 変数auth_typeの場合と同じです
remote_ident リモートユーザー名。安全上の理由に使用されることはめったにありません。見て RFC 931↓
content_type データが送信されている場合、変数はデータの種類に関する情報を保存します。
content_length POSTメソッドを使用してサーバーに転送されたデータのサイズ(バイト単位)
http_accept ブラウザから送信されたHTTPヘッダーからダウンロードされた変数 HTTPヘッダーに基づいてダウンロードされたクライアントブラウザによって受け入れられたMIMEタイプ
http_user_agent 顧客のブラウザに関する情報。フォーマット:ソフトウェア/バージョンライブラリ/バージョン

サーバーソフトウェアに応じて、表に表示される変数に加えて、他の環境変数が作成される場合があります。それらの詳細については、ソフトウェアのドキュメントをご覧ください。

以下のフレームには、Perlで書かれたCGIスクリプトの例があり、利用可能な環境変数を表示します。

#!/usr/bin/perl  印刷  「コンテンツタイプ:テキスト/htmlnn」 ;  foreach  $キー  キー  %env ))  {  印刷  「$ key-> $ env {$ key} 
; }

after-content-x4