Обратный прокси-сервер 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 платят вам, чтобы шантажировать меня в их направлении?

Другие вопросы по тегам