私は RESTful API を開発しており、リクエストを処理する mod_perl2 ハンドラーを作成しました。
$r->status($http_code)
私のハンドラーは、設定してエラーコードを処理しますreturn $http_code;
少し問題を除いて、すべて問題ありません。私の http_code が 200 と異なる場合 (たとえば 404)、apache はデフォルトの HTML エラー ドキュメントを私自身が生成した応答に追加します。
例えば:
GET /foo
与えます:
$VAR1 = bless( {
'status' => 404,
'data' => {},
'message' => 'Resource not found for foo'
}, 'My::Response' );
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /foo was not found on this server.</p>
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
<hr>
<address>Apache/2.0.54 (Fedora) Server at localhost Port 80</address>
</body></html>
このApacheで生成されたHTMLを取り除くにはどうすればよいですか?
更新: 私のせいです。私の mod_perl2 ハンドラは、Apache2::Const::OK ではなく HTTP_* コードを返していました。