我正在创建一个通过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提供静态页面。
答案 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不理解该请求,并且很可能它甚至从未在网络服务器后面的任何应用程序中使用它。