Bug #3730
closedPopup Bad request lors de la modification de la liste des utlisateurs d'un groupe du domaine mixte
Description
Utilisateur et groupes / domaine mixte : > modifier les utilisateurs : "bad request" à l'ouverture de la page
Updated by Nicolas Eysseric almost 12 years ago
- Status changed from New to Assigned
- Assignee set to Miguel Moquillon
- Target version set to Version 5.10.2
Reproduit sur l'intranoo avec IE7 et IE8 lors de la modification des utilisateurs d'un groupe du domaine mixte.
Pas de problème sous IE9, FF et Chrome...
Updated by Nicolas Eysseric almost 12 years ago
- Subject changed from Popup Bad request lors de la modification de la liste des utlisateurs d'un groupe du comaine mixte to Popup Bad request lors de la modification de la liste des utlisateurs d'un groupe du domaine mixte
Updated by Nicolas Eysseric almost 12 years ago
Une erreur 400 se produit lors de l'appel d'un service REST avec l'URL suivante :
/silverpeas/services/profile/users/function(elt%20/*,%20from*/)%20%20%7B%20%20%20%20var%20len%20=%20this.length%20%3E%3E%3E%200;%20%20%20%20var%20from%20=%20Number(arguments[1])%20%7C%7C%200;%20%20%20%20from%20=%20(from%20%3C%200)%20%20%20%20%20%20%20%20%20?%20Math.ceil(from)%20%20%20%20%20%20%20%20%20:%20Math.floor(from);%20%20%20%20if%20(from%20<%200)%20%20%20%20%20%20from%20+=%20len;%20%20%20%20for%20(;%20from%20<%20len;%20from++)%20%20%20%20{%20%20%20%20%20%20if%20(from%20in%20this%20&&%20%20%20%20%20%20%20%20%20%20this[from]%20===%20elt)%20%20%20%20%20%20%20%20return%20from;%20%20%20%20}%20%20%20%20return%20-1;%20%20}&_=1348561228294 HTTP/1.1
Ce problème se produit aussi bien sur le domaine mixte que sur les autres domaines.
Updated by Miguel Moquillon almost 12 years ago
- Status changed from Assigned to In progress...
Updated by Miguel Moquillon almost 12 years ago
- Status changed from In progress... to Resolved
- % Done changed from 0 to 100
Le problème vient d'un bogue des IE < 9 avec le javascript. Les tableaux dans les IE < 9 ne sont pas conformes au standard ECMA, en l’occurrence, il n'y a pas d'opération indexOf
. Pour palier à ce manque, lorsque le navigateur détecté est IE < 9, la méthode indexOf
est alors ajoutée au prototype objet des tableaux.
Or, dans certaines circonstances qui nous échappent, lorsque l'on parcours un tableau via le mot-clé in
, la méthode ajoutée au prototype peut être considérée comme un élément du tableau (ce mot-clé sert aussi à parcourir les propriétés d'un objet) ! C'est pourquoi, lorsqu'il y a des utilisateurs présélectionnés dans le user panel, on parcours le tableau de leurs identifiant via le mot-clé in
en vue de leur affichage et ... à la fin on tombe sur la méthode ajoutée indexOf
. Comme on attend un identifiant, avec lequel l'URL d'accès au profil de l'utilisateur est construit, IE (c'est beau) convertit alors la méthode en chaîne de caractères ; c'est-à-dire qu'il sérialise le code de la méthode en string !!!! Et voilà le code de la méthode présent dans une URL !
Un palliatif à ce bogue dans l'interpréteur javascript de IE a été de remplacer le parcours de tableaux dans le user panel avec le mot-clé in
par la vieille façon à-la C.
Updated by Miguel Moquillon almost 12 years ago
Je rajouterai aussi ceci : dans la mesure du possible, je recommande fortement aux utilisateurs sous Windows de changer de navigateur. S'ils ne peuvent passer à un navigateur moderne et plus fiable comme Firefox ou Chrome, alors passez à la dernier mouture d'IE (actuellement la 9).
Updated by Nicolas Eysseric almost 12 years ago
- Status changed from Resolved to Closed
OK. Validé et intégré.