我有一个数据库,它接受带有 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 指令的解决方案,我也欢迎使用其他开源软件来实现相同的目标。
感谢您的帮助!