How do I suppress the default apache error document in mod_perl?

安稳与你 提交于 2019-12-08 07:51:00

问题


I'm developing a RESTful API and I wrote a mod_perl2 handler that takes care of the request.

My handler deals with error codes by setting $r->status($http_code) and return $http_code;

Everything is fine, except a little problem: when my http_code is different than 200 (for instance 404), apache appends a default HTML error document to my own generated response.

For instance:

GET /foo

Gives:

$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>

How do I get rid of this apache generated HTML?

UPDATE: My fault. My mod_perl2 handler was returning a HTTP_* code instead of Apache2::Const::OK.


回答1:


See Apache2::Response. I do not have time to experiment right now, but that should work.




回答2:


Are you asking how to send no message body in your response?

If you want something other than what apache is going to do for you, you need to handle the request yourself. What does the rest of your handler look like? Posting code keeps us from guessing what you are doing.

The return value from your handler lets apache know if you handled the request yourself or if it needs to do something more on your behalf. I'm guessing that you're doing the latter.




回答3:


I was looking for this too. And the trick was quite simple:

$r->status(HTTP_NOT_FOUND);
$r->custom_response(404, "");
return OK;

where $r is Apache2::Response object.



来源:https://stackoverflow.com/questions/1681030/how-do-i-suppress-the-default-apache-error-document-in-mod-perl

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!