Я разрабатываю 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 возвращал код HTTP_* вместо Apache2::Const::OK.