Назад | Перейти на главную страницу

Обратный прокси-сервер Apache 2.4 создает неправильные привязки

Я запустил 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&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.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, чтобы вы могли попробовать использовать версию для разработки и посмотреть, работает ли она лучше.