如果之前有人问过这个问题(找不到任何类似的问题),或者只是非常明显而我只是个白痴,请提前致歉。
我正在使用 Apache 2.4 反向代理几个内部页面和 Web 应用程序。我已经启用了相当多的代理模块,包括 mod_proxy_html 以根据需要重写 HTML。代理的每个页面或网络应用都在 block 内。
通常这很有效。链接工作,资源加载,因为他们应该等等,等等,等等。但是这些网络应用程序中有一些使用 AJAX 来实现一些不错的用户体验功能,这些 AJAX 请求中的大多数都命中了代理的 JSON 端点。
我的问题是:任何代理的 JSON 响应都包含在
<html><body><p>{ "Example": "Yes" }</html></body></p>
我不知道这些 HTML 标签是从哪里来的,而且我试图摆脱它们的一切都没有奏效。我尝试了 LocationMatch block 并显式设置 ProxyHTMLEnable Off 并删除了替代输出过滤器。
有没有办法明确禁用特定 URL 的响应主体重写/替换?
最佳答案
我遇到了同样的问题。经过两天的测试,我找到了解决方案。
在Location区域你需要评论
#SetOutputFilter proxy-html
我只有以下几行
< Location /blabla >
#ProxyHTMLEnable off
ProxyPassReverse /
#SetOutputFilter proxy-html
ProxyHTMLURLMap /externalBlaBla/ /blabla/
ProxyPassReverseCookiePath / /blabla
< /Location >
关于json - Apache 反向代理将 JSON 响应包装在 HTML 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844685/