Nous avons un serveur Web qui répond à AJAX demandes en envoyant des données JSON au client. Le problème est que les données JSON ont le type de contenu "text/html" au lieu de "application/json" (c'est un serveur APEX Oracle, le bogue est reconnu par Oracle, mais ils ne le règlent pas).
Un serveur Web Apache est configuré entre les clients et le serveur en tant que proxy SSL. Ce mandataire analysera désormais toutes les données "text/html" transmises du serveur au client, réécrira les liens si nécessaire et, malheureusement, corrigera également les données html "mal formées". Etant donné que les données JSON envoyées par le serveur sont étiquetées text/html, ces correctifs html sont également appliqués aux données JSON (les balises <html> <body> .. seront ajoutées par exemple), ce qui les rend inutilisables par le client demandeur. (erreurs d'analyse).
Ce que j'ai essayé jusqu'à maintenant
<Location "/apex/wwv_flow.show">
ProxyPass http://192.168.1.100:8080/apex/wwv_flow.show
Header set "X-Rule-apex-wwv_flow.show" "1"
Header set Content-Type "application/json"
</Location>
<Location /apex/>
ProxyPass http://192.168.1.100:8080/apex/
Header set "X-Rule-apex" "1"
Header always set Cache-Control "no-cache, no-store, max-age=0, must-revalidate" env=nocache
SetOutputFilter INFLATE;proxy-html;DEFLATE
ProxyPassReverse /apex/
ProxyHTMLURLMap / /apex/
ProxyHTMLURLMap /apex /apex
ProxyHTMLURLMap /apex/ /apex/
ProxyHTMLDocType '<!DOCTYPE html>'
</Location>
En conséquence, les données JSON sont désormais étiquetées "application/json", mais aussi HTML-Filtered avec les balises "<html> <body> ...". De plus, les en-têtes "X-Rule…" ("X-Rule-apex" et "X-Rule-apex-wwv_flow.show") sont définis dans le paquet de données qui arrive, ce qui signifie que les deux < Lieu> Les règles ont été appliquées.
Divisez votre emplacement en deux sections:
1. <Location /apex/>
- ici vous devriez mettre les options ProxyPassReverse.
2. <Location /apex/(?!wwv_flow\.show)>
- celui-ci correspondra à tout autre que /apex/wwv_flow.show
La première section est obligatoire car ProxyPassReverse prend littéralement la place et va devenir fou avec regex. Si vous rencontrez de tels problèmes avec différentes directives, déplacez-les simplement ici.