我的Apache反向代理将代码添加到从head标记获取的HTML文件体中
我有一个使用Apache2.4.20的简单反向代理服务器,它从内部ApacheWeb服务器获取HTML文件。页面抓取和URL重写工作正常,但出现了一个问题 在任何网页通过代理后,有三件事是不正确的:头标签的内容出现在主体中,头标签丢失,并且在主体标签的顶部添加了一个神秘的“>”字符 这个额外的我的Apache反向代理将代码添加到从head标记获取的HTML文件体中,html,apache,proxy,reverse-proxy,Html,Apache,Proxy,Reverse Proxy,我有一个使用Apache2.4.20的简单反向代理服务器,它从内部ApacheWeb服务器获取HTML文件。页面抓取和URL重写工作正常,但出现了一个问题 在任何网页通过代理后,有三件事是不正确的:头标签的内容出现在主体中,头标签丢失,并且在主体标签的顶部添加了一个神秘的“>”字符 这个额外的代码对我来说意味着HTML标记的检测有问题(它可能是的一部分)。而且,即使head标签中没有内容,body标签仍然以奇怪的代码开头 代理内容-在开发者工具、Google Chrome浏览器中查看: 代理内
代码对我来说意味着HTML标记的检测有问题(它可能是
的一部分)。而且,即使head标签中没有内容,body标签仍然以奇怪的代码开头
代理内容-在开发者工具、Google Chrome浏览器中查看:代理内容-获取文件的原始来源:
原始HTML文件-直接从内部服务器文件系统打开:
代理服务器配置文件-关于传输和
ProxyHTML的部分
:我知道原始服务器工作正常,因此这不会导致问题。
以下是直接从原始服务器在浏览器(在代理服务器设备上)中查看的HTML文件的屏幕截图,以及Chrome Developer Tools中显示的源代码:
更新:正如预期的那样,mod_proxy_html是我的问题的主要原因(在原始文件中关闭它)。但是,这对我来说不是一个解决方案,因为我需要工具来重写代理文档中的相对URL引用。我读了这本书,但它没有描述任何毫无疑问导致我的问题的特性
我认为不相关的mod_proxy_html指令列表,一些经过测试:ProxyHtmlBuffSize、ProxyHTMLCharsetOut、ProxyHtmlOctype、ProxyHTMLEnable、ProxyHtmlLevents、ProxyHtmlExtrade(默认关闭)、ProxyHTMLFixups(根据建议尝试)、ProxyHtmlLintERP、ProxyHtmlLnks、ProxyHtmlMetadata(默认关闭)、ProxyHtmlTripComments、,ProxyHtmlURL映射。您正在使用mod\u proxy\u html 此mod将根据指令尝试影响通过代理的HTML资源。我的建议是删除ProxyHTML指令,看看会有什么结果。如果它不受影响,那么您知道它与mod_proxy_html有关 然后看看在ProxyHTMLEnable下面添加这个指令
ProxyHTMLFixups off
我也有同样的问题。然而,在同一台机器上,使用相同反向代理的其他站点运行良好,即使它们的配置完全相同,但URL不同。我不明白。。。除非我注意到有问题的文件在文件开头有错误 这导致ProxyHTML非常混乱,以至于它删除了
和
标记
使用dos2unix
实用程序删除BOM表后,文件显示正确
你的帖子给了我更多的动力来与之抗争。谢谢。您的问题是文档类型定义
<!DOCTYPE html/>
不应关闭标记。应该是这样的:
<!DOCTYPE html>
mod_proxy_html试图通过将它包装在段落中来修复它所看到的额外的
字符。正如我所怀疑的,mod_proxy_html导致了我的问题(关闭它解决了问题)。不过,这不是我的解决方案,因为我需要它来重写代理文档中的相对URL引用。另外,尝试关闭ProxyHTMLFixups
也不起作用(看看它,我不明白它为什么会导致错误)。从整体上看,我不知道是什么原因导致了我的问题。我现在已经使我的文章更清晰,格式更好,希望它更有用,更容易思考。如果你有任何想法,你可以提供更多。我目前无法访问上面提到的服务器,但这个问题应该是可以重现的。我现在已经使我的帖子更清晰,格式更好,希望它更有用,更容易思考。我目前无法访问提到的服务器,但问题应该是可重现的。是的,我确认存在相同的问题。这是一件非常奇怪的事情,因为我对其他站点也使用了相同的反向代理,而且这些站点运行良好(没有删除),并且它们具有相同的设置。我通过验证器运行了html文件,它没有给出任何警告,但是,proxyhtml去掉了和,没有什么好的理由,也没有什么好的结果。