Lors de l'ouverture de l'application de capture DHIS 2 Tracker, la demande AP de la ressource me
entraîne une erreur 400 côté client. En regardant dans les journaux Tomcat, je vois:
Caractère non valide trouvé dans la cible de la demande. Les caractères valides sont définis dans les RFC 7230 et RFC 3986
Je cours Tomcat 8.5. Quelle est la raison pour ça?
Cela est dû au fait que DHIS 2 utilise des crochets dans certaines de leurs URL et que Tomcat version 8.5 a ultérieurement interdit l'utilisation de crochets dans les URL.
L'équipe DHIS 2 travaille sur une modification de la syntaxe de l'API afin d'éviter l'utilisation de crochets et d'encoder toutes les URL de demande d'API.
Une solution à court terme consiste à configurer Tomcat de manière à permettre les crochets via l'attribut de connecteur relaxedQueryChars
. Ouvrez le fichier suivant:
/Tomcat-dir/conf/server.xml
et ajoutez relaxedQueryChars="[]"
à l'élément de connecteur HTTP:
<Connector protocol="HTTP/1.1"
port="8080"
relaxedQueryChars="[]" />
Cela autorisera les crochets dans les URL et DHIS 2 fonctionnera comme avant.
Ce problème a depuis été résolu par DHIS2-5081 . À l'avenir, cela ne devrait plus être un problème avec DHIS2 2.29 et plus récent.
Pour les versions plus anciennes, il est toujours nécessaire de modifier la configuration de Tomcat comme indiqué par Lars.