Я запустил Apache 2.4.20 на AIX 6.1 в качестве обратного прокси-сервера для доступа к 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.conf:
<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>
Пожалуйста помоги!
Из того, что я могу сказать mod_proxy_html
действительно понимает только HTML 4.01 и XHTML 1.0 на основе https://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 может быть лучше умение W.R.T. HTML 5, чтобы вы могли попробовать использовать версию для разработки и посмотреть, работает ли она лучше.