Je viens de trouver une autre anomalie d'Osmose: quand on clique sur le
lien en bas à droite pour générer un "Permalink", le lien généré contient
des caractères URLencodés (notamment les virgules qui séparent par exemple
les "item=1060,6060&level=1,2,3", remplacées par "%2C".

Cependant le serveur Osmose ne semble pas interpréter correctement ces
paramètres et du coup il sont ignorés et la carte apparaît avec une
sélection de toutes les erreurs possibles et de tous les niveaux de gravité.

Osmose devrait accepter "%2C" (même s'il accepte aussi "," qui n'a pas
réellement besoin d'être URL-encodé, contrairement aux caractères non-ASCII
ou certaines ponctuations ASCII réservées par la syntaxe des URL, la
virgule n'en faisant pas partie), simplement en faisant un URL-décodage des
paramètres présents dans la "querystring".

Si on "corrige" manuellement le Permalien en remplaçant les "%2C" par des
virgules, la requête fonctionne et la carte est correcte.

Bref le parsing des requêtes web demande une correction. Le lien généré en
cliquant "Permanlink" pourait aussis se passer d'UTR-encoder les virgules
(mais ce n'est pas une erreur de le faire, les navigateurs URL-encodent les
requêtes web souvent au delà de ce qui est nécessaire)

----

Note: le serveur devrait aussi accepter les caractères non-ASCII codés en
UTF-8 non URL-encodé, même s'il accepte aussi l'UTF-8 URL-encodé : tout
URL-encodage valide sous la forme %XX avec deux caractères hexadécimaux
devrait marcher pour toute valeur entre "%20" et "%FE", et pour certains
contrôles ASCII comme la tabulation "%09", et les sauts de ligne "%0A",
"%0D", les codes hexadécimaux devant marcher aussi avec les lettres
minuscules; l'URL-décodage se fait après avoir séparé les paramètres dans
la querystring en détectant les "&" séparateurs, puis le découpage
name=value en reconnaissant le premier "="; il reste alors les noms et
valeurs à UTL-décoder individuellement.

Le serveur devrait aussi accepter les requêtes de type POST où il ne sont
pas URL-encodés dans la querystring (comme dans les requêtes GET) mais
encodés dans le corps sous un format MIME classique (où plusieurs codages
sont possibles dont l'URL-encoding, ou le Base64 plus compact). En général
les serveurs web du marché font tous ça automatiquement, mais Osmose n'est
pas un simple serveur Apache ou PHP et visiblement il fait un traitement
simplifié qui ne respecte pas complètement les normes courantes.
_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-fr

Répondre à