Обратный прокси-сервер Apache переносит JSON-ответ в HTML
Заранее извиняюсь, если этот вопрос задавался ранее (не смог найти ничего похожего на это), или он кропотливо очевиден, а я просто придурок за вопрос.
Я использую Apache 2.4 для реверсирования прокси нескольких внутренних страниц и веб-приложений. У меня включено несколько прокси-модулей, включая mod_proxy_html, чтобы переписывать HTML по мере необходимости. Каждая прокси-страница или веб-приложение находятся внутри блоков.
Обычно это работает хорошо. Ссылки работают, ресурсы загружаются как надо, бла, бла, бла. НО некоторые из этих веб-приложений используют AJAX для некоторых полезных функций UX, большинство из этих запросов AJAX попадают на проксированную конечную точку JSON.
Моя проблема заключается в следующем: любой ответ JSON в прокси обернут в
<html><body><p>{ "Example": "Yes" }</html></body></p>
Я не знаю, откуда берутся эти HTML-теги, и все, что я пытался от них избавиться, не сработало. Я пробовал блоки LocationMatch и явно отключил ProxyHTMLEnable, а также удалил замещающие выходные фильтры.
Есть ли способ явно отключить перезапись / замену тела ответа для определенного URL?
3 ответа
У меня такая же проблема. После двух дней испытаний я нашел решение.
В области Расположение вам необходимо прокомментировать
#SetOutputFilter proxy-html
У меня есть только следующие строки
< Location /blabla >
#ProxyHTMLEnable off
ProxyPassReverse /
#SetOutputFilter proxy-html
ProxyHTMLURLMap /externalBlaBla/ /blabla/
ProxyPassReverseCookiePath / /blabla
< /Location >
Комментируя SetOutputFilter proxy-html, вы просто отключаете перезапись ссылок, поэтому proxy_html просто ничего не делает.
Похоже, что эта проблема обсуждалась по адресу https://bahumbug.wordpress.com/2006/10/12/mod_proxy_html-revisited/.
В современных версиях программного обеспечения (когда-то до того, как mod_proxy_html переместился на apache.org в 2011 году), рекомендуемое исправление - это директива xml2StartParse.
Сказав это, если ProxyHTMLEnable Off не исправил это (после перезапуска сервера), у вас также есть другие проблемы, связанные с областью действия ваших директив конфигурации.
PS Почему я могу "зарегистрироваться" здесь с помощью Google из Facebook, но не с OpenID? Сколько Google и Facebook платят вам, чтобы шантажировать меня в их направлении?