CGIアダプタ:URLの取得

2007/03/30 (Fri) 22:07:46 JST

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エラーを出力します。


Inverse Pages: WOCGIAdaptor