• v1.6.31 7ce6cd3972

    emitlinks released this 2026-10-27 16:18:17 +00:00 | 18 commits to main since this release

    AirWatch Sync 1.6.31

    1.6.31 — la synchro fonctionne même quand un proxy supprime l'en-tête CSRF

    Correction (erreur « GLPI a rejeté la requête » sur la synchro)

    • Un reverse proxy ou un WAF placé devant GLPI peut supprimer les en-têtes
      custom. En requête AJAX (X-Requested-With), GLPI 11 ne valide que
      l'en-tête X-Glpi-Csrf-Token : supprimé par le proxy, chaque POST
      recevait un 403 alors que le jeton du corps de requête était valide.
    • Les appels de synchro (page de configuration et panneau par appareil)
      sont maintenant des POST simples sans flag XHR : GLPI valide alors
      _glpi_csrf_token dans le corps, qui arrive toujours au serveur.
    • Après un 403, un jeton frais est récupéré via endpoint=token et la
      requête est relancée une fois ; si cet endpoint est injoignable, un
      message d'erreur propre s'affiche au lieu d'un TypeError.
    • Le jeton de la page est consommé par un POST simple : il est maintenant
      rafraîchi automatiquement après chaque succès, donc le clic suivant ne
      passe pas par un 403.

    Vérifié

    • Syntaxe PHP (php -l) et JS généré (node --check) des deux pages.
    • Tests logiques Node modélisant le listener CSRF de GLPI 11 + un proxy qui
      supprime l'en-tête : l'ancienne version (1.6.30) reproduit exactement les
      erreurs signalées (403 en AJAX, TypeError dans l'UI) ; la nouvelle version
      réussit dans tous les scénarios (jeton valide, jeton déjà consommé,
      endpoint de jeton mort, avec ou sans proxy).
    • Déployé et testé sur le conteneur de référence GLPI 11 : la page rendue
      n'envoie plus l'en-tête XHR sur les POST de synchro, et le POST avec jeton
      de corps (la requête exacte envoyée par le nouveau JS) reçoit une réponse
      JSON 200.

    Pensez à recharger la page en force (Ctrl+F5) après l'installation.

    Downloads