Bug #81211
Middleware : mauvaise détection d'une requête ajax
0%
Description
De #81141#note-4, une requête ajax faite depuis wcs vers combo qui n'est pas détectée comme étant ajax, mellon qui tente une authentification passive et échec.
A lire le code il me semble que ça a du marcher via :
# Skip AJAX requests if request.headers.get('x-requested-with') == 'XMLHttpRequest': return
Mais là point de 'x-requested-with' dans la requête, j'imagine que ça vient d'une évolution de JQuery et que du coup la solution n'est pas du tout dans mellon, mais ce ticket en première approche pour ça ne se perde pas dans les limbes.
Potentiellement des problèmes dans combo où on voit :
def is_ajax(request): return request.headers.get('x-requested-with') == 'XMLHttpRequest'
Associated revisions
History
Updated by Benjamin Dauvergne 14 days ago
À mon avis on devrait rajouter ça maintenant:
sec_fetch_mode = request.headers.get('sec-fetch-mode') if sec_fetch_mode and sec_fetch_mode != 'navigate': return
Updated by Benjamin Dauvergne 14 days ago
Mais je me demande quand même comment on fait pour personnaliser le template d'une brique en fonction du statut connecté ou pas d'un utilisateur si une cellule est chargée en ajax, visiblement ça ne marchera jamais si on est pas d'abord connecté au portail. J'ai l'impression qu'on a déjà cette discussion qui avait peut-être menée à détecté ces appels ajax dans mellon.
Updated by Emmanuel Cazenave 14 days ago
Benjamin Dauvergne a écrit :
À mon avis on devrait rajouter ça maintenant:
[...]
Ça marcherait sur mon exemple, la requête est faite avec :
Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-site
Updated by Emmanuel Cazenave 14 days ago
Benjamin Dauvergne a écrit :
visiblement ça ne marchera jamais si on est pas d'abord connecté au portail.
Oui même analyse ici avec Thomas N.
Sinon juste avant ton message, je m'apprêtais à suggérer de passer systématiquement un ?no-passive-auth
dans combo.public.js::combo_load_cell sur l'idée qu'une authent passive ne peut pas marcher en ajax.
Updated by Benjamin Dauvergne 14 days ago
- Assignee deleted (
Benjamin Dauvergne)
Emmanuel Cazenave a écrit :
Sinon juste avant ton message, je m'apprêtais à suggérer de passer systématiquement un
?no-passive-auth
dans combo.public.js::combo_load_cell sur l'idée qu'une authent passive ne peut pas marcher en ajax.
Si vous voulez, mais c'est pas le bon projet :)
Updated by Robot Gitea 14 days ago
- Status changed from Nouveau to Solution proposée
- Assignee set to Benjamin Dauvergne
Benjamin Dauvergne (bdauvergne) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/django-mellon/pulls/8
- Titre : middleware: check ajax request with sec-fetch-mode header header (#81211)
- Modifications : https://git.entrouvert.org/entrouvert/django-mellon/pulls/8/files
Updated by Benjamin Dauvergne 14 days ago
Emmanuel Cazenave a écrit :
Benjamin Dauvergne a écrit :
visiblement ça ne marchera jamais si on est pas d'abord connecté au portail.
Oui même analyse ici avec Thomas N.
Je dis ça parce qu'en première analyse je voulais autoriser le passage des requêtes CORS sur /idp/saml2/sso/, car en vrai c'est ça qui bloque, le fait que le endpoint de SSO SAML n'ajoute pas l'entête Allow-CORS (à faire sélectivement certainement, genre en testant que l'entête Origin match le domaine du service SAML demandeur et en posant Allow-CORS: header['origin']). Ce ticket c'est pour garder le statu-quo actuel, c'est déjà bien.
Updated by Robot Gitea 14 days ago
- Status changed from Solution proposée to Solution validée
Emmanuel Cazenave (ecazenave) a approuvé une pull request sur Gitea concernant cette demande :
Updated by Robot Gitea 10 days ago
- Status changed from Solution validée to Résolu (à déployer)
Benjamin Dauvergne (bdauvergne) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/django-mellon/pulls/8
- Titre : middleware: check ajax request with sec-fetch-mode header header (#81211)
- Modifications : https://git.entrouvert.org/entrouvert/django-mellon/pulls/8/files
Updated by Transition automatique 6 days ago
- Status changed from Résolu (à déployer) to Solution déployée
middleware: check ajax request with sec-fetch-mode header header (#81211)