Edit Diff Annotate History
Upload
List
Recent
Alias
Top
Help
CGIアダプタ:URLの取得 : Edit
Last updated: Fri Mar 30 22:07:46 +0900 2007
script_name = getenv(CGI_SCRIPT_NAME); path_info = getenv(CGI_PATH_INFO); if (script_name == NULL) die(INV_SCRIPT, HTTP_NOT_FOUND); else if (path_info == NULL) { path_info = "/"; } 環境変数SCRIPT_NAMEとPATH_INFOの設定です。 SCRIPT_NAMEがヘッダに含まれていなければエラーとし、HTTPトランザクションを終了します(die)。 スクリプトファイル名以降に"/"がなければ、PATH_INFOがヘッダに含まれません。 そのときは、PATH_INFOを"/"に設定しておきます。 例えば =http://www.xxxxx.com/cgi-bin/WebObjects/Application.woa/sessionID/contextID= にアクセスすると、SCRIPT_NAMEは =/cgi-bin/WebObjects= 、PATH_INFOは =/Application.woa/sessionID/contextID= に設定されます。 INV_SCRIPTはerrors.hで定義されているエラーメッセージ "Cannot determine script name from CGI" です。 HTTP_NOT_FOUNDはhttperrors.hで定義されている、ご存知404のステータスコードです。 !die(), die_resp() static void die(const char *msg, int status) { // エラーメッセージとHTTPステータスからHTTPResponseを生成 HTTPResponse *resp = resp_errorResponse(msg, status); die_resp(resp); } static void die_resp(HTTPResponse *resp) { sendResponse(resp); resp_free(resp); // メモリ解放 exit(0); } HTTPエラーを出力します。