我正在开发一个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。
答案 0 :(得分:1)
见Apache2::Response。我现在没有时间进行实验,但这应该有效。
答案 1 :(得分:0)
您是否在询问如何在回复中不发送邮件正文?
如果你想要的东西不是apache会为你做什么,你需要自己处理这个请求。你的处理程序的其余部分是什么样的?发布代码使我们无法猜测您在做什么。
处理程序的返回值让apache知道您是自己处理了请求还是需要代表您做更多事情。我猜你正在做后者。
答案 2 :(得分:0)
我也在寻找这个。 诀窍很简单:
$r->status(HTTP_NOT_FOUND);
$r->custom_response(404, "");
return OK;
其中$ r是Apache2 :: Response对象。