4D v12.4CGIを使用する |
||||||||||||||
|
4D v12.4
CGIを使用する
|
項目の場所 | 対応するURL(Webサーバルート) |
[mybase] folder | |
+ mybase.4db (ストラクチャ) | (http://195.1.2.3/) |
[cgi-bin] folder | |
+ counter.exe | (http://195.1.2.3/cgi-bin/counter.exe) |
[Misc] folder | |
+ [cgi-bin] folder | |
++script.pl | (http://195.1.2.3/Misc/cgi-bin/script.pl) |
手動モードでのCGIの呼び出しには、SET CGI EXECUTABLEコマンドを使用する必要があります。特に、このコマンドを使用すると、Webユーザに対してURL上に表示されないようにCGIを実行することができます。
この件に関する詳細は、このコマンドの説明を参照してください。
CGIの呼び出しによって、4D環境が変更されることはありません (セレクション、変数等) 。
4Dは応答サイズの制限を行いませんが、CGIに割り当てられる最大処理時間には30 秒という制限がある点に注意してください。この時間を超えると、Webサーバはエラーを返します。
CGIの呼び出しによりエラーが発生すると、4Dは以下の応答のいずれか1つを標準のHTMLページに納めて返します:
Note: CGIが動作しない場合は、CGIに関する実行権が適切であるか、またCGIスクリプトの改行が正しいかどうかを調べてください。
この節は、4Dデータベース用に特定のCGIを開発しようとするプログラマを主に対象としています。
環境変数
4DはCGI/1.1仕様、および以下の情報に従って環境変数の定義を行います:
GATEWAY_INTERFACE: 常に“CGI/1.1”
SERVER_SOFTWARE: 常に“4D_v11_SQL/version”
SERVER_PROTOCOL: “HTTP/1.0”または“HTTP/1.1”
SERVER_PORT_SECURE: HTTP接続が暗号化モードである場合には"1"が、それ以外は"0"が納められます。
PATH_TRANSLATED: HTMLサーバルートへのフルパス、およびCGI名に続けてパス部分が納められます。セキュリティ上の理由から、この部分には文字シーケンス"//"や".."を入れることはできません。
例 : サーバのルートが“C:/web”であるとき、/cgi-bin/cgi.exe/pathのようなCGI呼び出しに対し、PATH_TRANSLATEDの値は"C:/web/path"になります。/cgi-bin/cgi.exe/../パスのようなCGI呼び出しに対して、4Dは"Forbidden"エラーを返します。
REMOTE_IDENT: ユーザ名 (適切であれば) 、それ以外は未定義。
HTTP_AUTHORIZATION, HTTP_CONTENT_LENGTH そして HTTP_CONTENT_TYPE: 未定義
ALL_HTTP およびURLは、ISAPI DLL呼び出しの場合に定義されます。
CERT_xxx と HTTPS_xxx は、接続が保護されている場合に定義されます (DLLのみ) 。
Note: SET ENVIRONMENT VARIABLE コマンドを使用して、これらの変数を設定することができます。
標準の環境変数に加え、4Dではテキスト変数のFORMVAR_variablenameが提供されます:
この機能により、フォームの処理はさらに楽になりますが ("a=1&b=2&..."のような文字列を解析する必要がない) 、このCGIは4D特定のものになります。
CGIより送信された応答の処理
CGI (Windows実行形式またはPERLスクリプト) の名前が"nph-" (No Parsing Header) で始まる場合、4Dはその応答を"現状のまま"Webクライアントに送信します。この場合、HTTPの規約に準拠するかどうかはCGI次第です。ISAPI DLLに関しては、4Dは名前の先頭が何であろうと、その応答を解析しません。上記以外の場合、4DはHTTPヘッダを送信します:
4Dは、HTTP応答のヘッダ内にある、あらゆる種類の改行コンビネーション (Windows-CRLF、Mac OS-CR、Unix-LF) を受け付け、再フォーマットします。
ISAPI DLLに関して4Dは非同期処理 (HttpExtensionProcはHSE_STATUS_PENDINGを返す) を受け付けます。ServerSupportFunction (HSE_REQ_DONE_WITH_SESSION) の呼び出しは、必ず次の30秒の間に行われなければなりません。関数TerminateExtensionが定義されると、常にHSE_TERM_MUST_UNLOADの値を使って呼び出され
ます。
プロダクト: 4D
テーマ: Webサーバ
SET CGI EXECUTABLE
SET ENVIRONMENT VARIABLE