WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:OutputFilter処理でCGIのデータが出力結果でなくそのままのデータになります

0:[投稿] 森脇 [2009/08/27 17:27 ] [環境:開発用の機器です。 Apache2.2.10]

Apache2.2.10でモジュールを作成しました。
都合によりPHPとPerlは使用していません。

処理内容は、作成したモジュールでリクエスト
ヘッダをチェックして、OKの場合、
OutputFilteで出力内容を変更するというものです。

困っているのは、JavaScriptの場合は問題ない
のですが、CGIの場合出力結果ではなくて、ソース
そのままのデータになってしまうことです。

例を記述しますと。
print("Hello !\n")の場合、"Hello"を期待しますが、
OutputFilterでデータを取得すると
print("Hello !\n")となってしまします。
実際はCGIをC言語で記述していいますので、
オブジェクトを読み込んでしまします。

今回作成したモジュールの登録を止めて、
OutputFilterのみの場合は、出力結果が取得できます。

この処理が不可能であるのか、それとも、設定が
間違っているのでしょうか。

尚、モジュールのソースでモジュール関数とOutputFilter
の登録は以下の通りです。test_handler()でリクエストヘッダ
をチェックしてOK場合、DECLINEDを返しています。

ap_hook_handler(test_handler, NULL, NULL, APR_HOOK_MIDDLE);
ap_register_output_filter("TEST_FILTER", test_out_filter, NULL, AP_FTYPE_RESOURCE);

httpd.confのCGIに関する設定は以下の通りです。
------ ここから ------------------------------
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

<Directory "/usr/local/apache2/cgi-bin">
   AllowOverride None
   Options None
   Order allow,deny
   Allow from all
</Directory>

AddHandler cgi-script .cgi

#今回作成したモジュールの登録
<Location "/cgi-bin">
 SetHandler test
 SetOutputFilter TEST_FILTER
</Location>

-------- ここまで -------------------------
上記の設定で、「SetHander test」の部分をコメントにすると
OutputFilterで正しい結果が取得できます。
ApacheがCGIを正しく処理しているようです。

ないか間違っているようでしたら、ご教授をお願いします。

回答(必須): 状態:

お名前(必須):

URL:




[戻る]