我在 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&PortalPath=%2fusers%2fweblogic%2f_portal&Page=page%201&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&PortalPath=%2fusers%2fweblogic%2f_portal&Page=page%201&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,因此您可以尝试使用开发版本,看看其性能是否更好。