Apache 2.4 反向代理产生错误的锚点

Apache 2.4 反向代理产生错误的锚点

我在 AIX 6.1 上运行 Apache 2.4.20 作为反向代理,以便访问在后端服务器上运行的 Oracle Business Intelligence 11.1.1.7.150120。

反向代理修改了原始 HTML 代码,导致 HREF 锚点设置到错误的位置。

这会导致菜单故障(锚点不再位于表格结构上)。

原始HTML代码(部分):

<a 
    id="selEditDashboard"
    class="NQWMenuItem NQWMenuItemWIconMixin"
    href="javascript:void(null)"
    onclick="EditPage('saw.dll?EditDashboard&amp;PortalPath=%2fusers%2fweblogic%2f_portal&amp;Page=page%201&amp;Done=saw.dll%3fDashboard');return false;"
>

<table class="MenuItemTable" cellspacing="0" cellpadding="0">
<tr>
<td class="MenuItemIconCell">
<img border="0" src="res/sk_FusionFX/catalog/edit_ena.png" alt="Dashboard bearbeiten"/>
</td>
<td class="MenuItemTextCell" colspan="2">Dashboard bearbeiten
</td>
</tr>
</table>
</a>

来自反向代理的 HTML 代码:

<a 
    id="selEditDashboard"
    class="NQWMenuItem NQWMenuItemWIconMixin"
    href="javascript:void(null)"
    onclick="EditPage('saw.dll?EditDashboard&amp;PortalPath=%2fusers%2fweblogic%2f_portal&amp;Page=page%201&amp;Done=saw.dll%3fDashboard');return false;"
>
</a>
<table class="MenuItemTable" cellspacing="0" cellpadding="0">
<tr>
<td class="MenuItemIconCell">
<img border="0" src="res/sk_FusionFX/catalog/edit_ena.png" alt="Dashboard bearbeiten">
</td>
<td class="MenuItemTextCell" colspan="2">Dashboard bearbeiten
</td>
</tr>
</table>

以下是我的httpd配置文件

<IfModule proxy_module>
        LogLevel info
        SetOutputFilter INFLATE;proxy-html;DEFLATE
        SSLProxyEngine On

        ProxyPreserveHost On
        ProxyRequests Off

        ProxyHTMLEnable On
        RequestHeader unset Accept-Encoding
        ProxyHTMLCharsetOut *

        ProxyHTMLStripComments Off
        ProxyHTMLMeta On
        ProxyHTMLExtended On

        <Proxy *>
           Order deny,allow
           Allow from all
        </Proxy>

        ProxyPass          /oa-links.html http://backend_server_and_port/oa-links.html
        ProxyPassReverse   /oa-links.html http://backend_server_and_port/oa-links.html

        <Location />
        Order deny,allow
                Allow from all
        </Location>

        ProxyPass          /analytics/   http://backend_server_and_port/analytics/
        ProxyPassReverse   /analytics/   http://backend_server_and_port/analytics/
        <Location /analytics/>
                ProxyPassReverse /analytics/
                Order deny,allow
                Allow from all
        </Location>

        SetEnv proxy-sendchunked 1

        Header edit Location ^http://backend_server_and_port/analytics/ https://backend_server_and_port/analytics/
</IfModule>

请帮忙!

答案1

据我所知,mod_proxy_html只真正理解基于 HTML 4.01 和 XHTML 1.0https://httpd.apache.org/docs/2.4/mod/mod_proxy_html.html#proxyhtmldoctype

搜索是否<table>允许<a>https://stackoverflow.com/questions/6013943/table-tag-inside-anchor-tag在其他答案中,这表明 HTML 4 不允许这样做,所以我的直觉是mod_proxy_html“有帮助地”将您的文档重写为有效的 HTML 4,这会破坏您的锚点。

看着https://httpd.apache.org/docs/trunk/mod/mod_proxy_html.html#proxyhtmldoctype建议 Apache >2.4 可能具有更好的智能 WRT HTML 5,因此您可以尝试使用开发版本,看看其性能是否更好。

相关内容