如何替换使用 Apache httpd 反向代理时发送给客户端的响应代码

如何替换使用 Apache httpd 反向代理时发送给客户端的响应代码

我有一个数据库,它接受带有 JSON 有效负载的 HTTP POST 请求并正确返回 HTTP 201 Created 状态响应和一些 JSON 内容。

Garmin 有一项服务,它会将 JSON POST 到提供的 URL,但仅将 HTTP 200 OK 响应视为成功。其他任何响应都会被视为错误,并提示以递减的速度重试,直到放弃。

Garmin 拒绝修复他们的代码,所以我只能采取一种解决方法。

我已经在使用 Apache 来代理对我们环境中的应用程序和数据库的请求,并且认为肯定有一种方法来代理这些请求,检查来自数据库的响应是否为 201 Created,如果是,则在返回 Garmin 的过程中将其替换为 200 OK。

我已阅读了整个 mod_proxy、mod_proxy_http、mod_header 和 mod_rewrite 文档页面,并搜索了各种相关问题、答案和搜索结果。我找到的最接近的答案是这个 StackOverflow 答案使用 Redirect 指令和空白错误页面。但我替换的代码实际上是成功代码,因此我无法将 ErrorDocument 指令与其一起使用。

理想的解决方案应在<Location>包含 ProxyPass 和 ProxyPassReverse 指令的上下文中工作。它应仅用 200 响应和相同内容替换来自后端 HTTP DB 的 201 响应。它不应更改任何其他响应。

如果没有使用 Apache 指令的解决方案,我也欢迎使用其他开源软件来实现相同的目标。

感谢您的帮助!

相关内容