禁用默认的apache错误页面

时间:2016-11-18 16:41:55

标签: apache api http-status-code-400

我正在创建一个通过apache访问的API。我的API旨在在请求出现问题时返回http状态错误代码。例如,如果API使用者将无效日期格式作为查询参数发送,则API服务器将使用类似的内容进行响应。

Http状态代码:400
体:

{
   message: "Invalid date format"
}

然而,apache似乎正在用这个错误页面替换正文:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>

如何阻止apache替换响应?

注意:如果API将Http状态代码设置为200,则响应主体将按预期返回。

添加更多上下文:它是一个由apache提供的角度应用程序,代理tomcat用于api请求,客户端应该处理错误消息,而不是从apache提供静态页面。

2 个答案:

答案 0 :(得分:1)

技巧是将apache的默认400错误请求错误页面重新映射到您的公共条目 忽略http ssl错误,然后使用.htaccess文件强制使用https

default-ssl.conf

<VirtualHost *:443>
    DocumentRoot /var/www/html/public
    ErrorDocument 400 /var/www/html/public/index.php
    SSLEngine on
    SSLCertificateFile  /etc/ssl/certs/default.crt
    SSLCertificateKeyFile /etc/ssl/private/default.key
</VirtualHost>

.htaccess

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

答案 1 :(得分:0)

尝试按照docs here指定apache / httpd。

的自定义错误页面

即,将它放在 .htaccess 或httpd.conf网站定义中。

表示静态响应:

ErrorDocument 400 /error/static400.json

甚至动态

ErrorDocument 400 /error/doSomething.php

400意味着apache不理解该请求,并且很可能它甚至从未在网络服务器后面的任何应用程序中使用它。