ProxyErrorOverride 关闭

ProxyErrorOverride 关闭

我在 Apache 上运行前端 Angular,在 Tomcat 上运行后端 Spring REST API。

我想在某些错误情况下抛出 501 错误,并希望该响应以 JSON 形式呈现到 UI(Content-Type"application/json")。这在我的本地运行良好,正如预期的那样,Angular 能够解释 JSON 响应,但是当涉及到一些常见的 QA 环境时,它会失败,因为 501 错误以文本/html 的形式呈现给 UI,而 Angular 无法消化。

我的本地和 QA 之间的区别是,Angular 在节点上运行,而 QA 使用 Apache。apache 是将带有 501 http 代码的 JSON 响应转换为 html 类型吗?

我在浏览器上收到的响应如下。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Not Implemented</title>
</head><body>
<h1>Not Implemented</h1>
<p>GET to /test/customer/getCustomer not supported.<br />
</p>
</body></html>

答案1

最后,我终于找到了导致 Apache 用其自己的错误文档替换所有非 2XX 响应的原因。您需要做的就是注释或关闭 ProxyErrorOverride。这样,Apache 就会将错误响应原封不动地从后端服务器代理传递到 UI,而不会丢失内容,例如,它会原封不动地发送 Json 类型的错误响应,而不会丢失标头。

ProxyErrorOverride 关闭

希望这对某人有帮助。

相关内容