2017-07-07 5 views
0

Je reçois une erreur de demande Bad sur IE11:IE11: Erreur 400 uniquement sur le serveur spécifique

  • Serveur: Tomcat 8.5
  • Cadre: Struts 1
  • Environnement: préproduction

  • Erreur déclencheur: ouverture d'une URL via window.open ("action avec paramètre avec accents ou caractères chinois");

L'erreur se produit uniquement en utilisant IE11, avec Firefox ou Chrome cela fonctionne. Et seulement dans cet environnement spécifique. Il fonctionne dans l'environnement DEV avec Tomcat 8.5. Il fonctionne également dans les anciens serveurs prod/preprod/dev avec Websphere 6.1. Je ne pouvais pas le reproduire localement, même en changeant le paramètre du connecteur Tomrie 8 URIEncoding.

Est-ce que quelque chose de semblable est arrivé à quelqu'un? Juste pour l'instant, une solution de contournement que j'ai trouvé était d'utiliser Javascript encodeURI fonction avant de déclencher le window.open, mais je cherche la vraie raison qui fait échouer seulement sur ce serveur spécifique.

J'ai essayé de modifier les paramètres internationaux IE pour encoder les URL et ajouter le site à mes sites sécurisés, mais l'erreur persiste.

+0

Y at-il une erreur de navigateur? –

+0

Pas d'erreurs dans le navigateur, à part le 400. C'est un comportement étrange, étant donné que la même application déployée dans d'autres serveurs fonctionne bien dans IE, et le même serveur fonctionne bien dans d'autres navigateurs. – Markos

Répondre

0

J'ai trouvé ce qui se passait: le serveur DEV et le serveur Preprod étaient légèrement différents, DEV avait Tomcat 8.5.3, Preprod avait Tomcat 8.5.9, dans cette version il y a quelques restrictions avec les caractères dans un URI, Firefox et Chrome les encoder avant de les envoyer au serveur (c'est pourquoi il ne manque pas dans ces navigateurs), IE les envoie comme ils viennent (en spécifiant même dans les options pour encoder les URLs). Donc, pour IE, il est nécessaire de les encoder avec javascript avant d'envoyer la demande.