IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Problème de charset avec le mod_proxy_html


Sujet :

Apache

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Problème de charset avec le mod_proxy_html
    Bonjour,

    Je vous soumet un problème que voici:
    J'ai un reverse proxy avec apache 2.0 avec le mod_proxy_html 2.5.1 qui me retourne systematiquement des page en utf8 dans le Header HTTP. D'après la doc ca serait normal. Mes page sont toutes avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    Alors, pour les requete GET, mes pages semblent s'afficher correctement.
    Par contre pour les POST, c'est pas le cas..

    J'ai essayé de faire le POST directement sur mon serveur J2EE, et pas pas de problème.

    Enfin, j'ai capturé les trame réseau et là bizarrement, mes données sont envoyées (toujours en POST) avec un encodage différent selon que je POST sur le reverse proxy ou directement sur le serveur J2EE????
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Vers le reverse-proxy:  question1=%C3%A9&response1=
    Vers le serveur J2EE: question1=%E9&response1=

    Je ne comprend vraiment pas ce dernier test. Pourquoi mes données sont envoyé avec un encodage différent alors que j'utilise le même browser et le même formulaire dans mes test???

    Y a t-il quelqu'un qui a réussit à faire fonctionner correctement le mod proxy_html avec ISO-8859-1?

    Au fait, j'ai un Gentoo, Athlon 64 et la version 3 du mod_proxy_html n'est pas disponible

    J'espère que vous pourrez m'aider!

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Si je positionne l'attribut accept-charset sur mon formulaire, c'a marche mieux sur firefox mais pas IE: mes caractères sont correctement encodés lors du POST

    Sur Firefox, cela génère l'entête ACCEPT-CHARSET dans la requete HTTP, pas sur IE...

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Tes trames, tu les as "sniffées" entre quoi et quoi quand tu es passé par le proxy ? Entre le client et le proxy ou entre le proxy et le serveur ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Je sniffe à la sortie de mon poste. Quand je veux tester directement avec mon serveur j2EE, je modifie mon /etc/hosts et je garde la meme URL

    donc pour mes deux tests, c'est entre mon poste et le proxy (test1) et entre mon poste et le serveur (teste2)

    Je precise que j'ai sniffé entre le proxy et le serveur. Les données recues par le serveur sont mal encodées car c'est mon poste qui les envoie incorrectement.
    Et puis, ma response Header Content-Type est positionné correctement à ISO-8859-1 à la sortie de mon serveur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Content-Type: text/html;charset=ISO-8859-1
    C'est le mod_proxy_html qui le modufie en UTF-8 en sortie du reverse proxy.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Content-Type: text/html;charset=utf-8
    En fait je pense que pour un POST, mon browser utilise le charset indiqué que le header de la réponse qui a généré le formulaire.
    Donc quand je passe par le RV-Proxy, mon header est toujours en UTF-8 alors qu'il est en ISO-8859-1 quand je vais directement sur le serveur.

    Je sais toujours pas pourquoi mon IE (v6) ne veut pas positionner l'entete ACCEPT-CHARSET dans mes requetes. Cela aurait pu etre une solution de contournement...

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par tipou75 Voir le message
    En fait je pense que pour un POST, mon browser utilise le charset indiqué que le header de la réponse qui a généré le formulaire.
    Ca, c'est normal, le client poste dans le charset dans lequel il a reçu la réponse. Avec mod_proxy_html, la balise <meta http-equiv="Content-Type"> vaut quoi ?

    Le moyen le plus sûr de corriger le pb serait de passer tout ton site en UTF-8, mais je ne sais pas quelle quantité de travail ça demande

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Tout en UTF-8? je comprend pas et mes accens?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    la balise <meta http-equiv="Content-Type"> vaut quoi ?
    Il vaut ISO-8859-1 dans tout les cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    Le proxy_html ne modifie pas cette valeur.
    Par contre, il modifie le header Content-Type de la réponse et c'est bien la le problème. La version 2.5.x ne supporte que le utf-8.

    Y a t-il un moyen avec le mode rewrite de modifier le header de la réponse?

  7. #7
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Non, mod_rewrite ne peut pas modifier la valeur d'un en-tête.

    J'ai pas tout compris de la doc de mod_proxy_html : il y est dit qu'on peut utiliser autre chose qu'UTF-8 mais c'est pas clair comment faut faire. J'ai l'impression que tu fais déjà ce qu'il faut.

    Peux-tu vérifier 3 choses avec le proxy :
    1. La valeur de l'en-tête Content-Type renvoyé par ton serveur J2EE au proxy. Il faut donc que tu sniffes la communication entre le proxy et le serveur J2EE.
    2. La valeur de ce même en-tête (donc reçu par le navigateur) entre le proxy et le navigateur ? Avec Firefox, c'est assez facile : installe une extension du style LiveHTTPHeaders et il te sortira toutes les infos.
    3. Quand tu as reçu une page, quel est l'encodage retenu par le navigateur ? C'est menu Affichage > Encodage.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Merci pour tes réponses.

    Pour le point 1 et 2, c'est ce que j'indiquais un peu plus haut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    - à la sortie de mon serveur:
    Content-Type: text/html;charset=ISO-8859-1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    - à la sortie du RP:
    Content-Type: text/html;charset=utf-8
    et pour le point 3, toutes mes pages sont en UTF-8 (locique compte tenu du point 2) Cette indication du browser semble venir du header et pas du META (qui est en ISO-8859-1) car mes pages s'affichent correctement en GET.

    Je ne suis même pas sur que la v3 qui semble mieux gérer l'i18N est fiable (cf.http://bahumbug.wordpress.com/2006/1...tml-revisited/)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Extrait:
     
    On December 19, 2007 at 11:15 pm Pin Said:
     
    Hi…
     
    I have problem with mod proxy html 3 where action attribute in form is not get parsed. And some ‘&nbsp;’ the ‘&’ is converted to ‘&amp;’. some of the whitespace get replaced with &nbsp.
     
    Thanks.

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par tipou75 Voir le message
    et pour le point 3, toutes mes pages sont en UTF-8 (locique compte tenu du point 2) Cette indication du browser semble venir du header et pas du META (qui est en ISO-8859-1) car mes pages s'affichent correctement en GET.
    Ben justement, c'est ça qui me gêne. Dans ta page, tes accents s'écrivent bien ? C'est pas des "?" à la place ? S'ils s'affichent bien, c'est que mod_proxy_html a réécrit les caractères accentués. Dans ce cas, effectivement, le navigateur peut ne pas tenir compte de la balise meta car il se rend compte qu'elle est erronée par rapport aux caractères de la page.

    Vu comme c'est parti, à mon avis ta pas d'autre choix que de passer toute ton appli en UTF-8, donc réenregistrer tous tes fichiers en UTF-8 et mettre un <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Quand j'affiche le source de ma page, les caractères accentués ne sont pas encodés. A priori, il n'y a pas de ré-écriture par le proxy

    Je pensais que le browser utilisait le charset du META pour encoder les pages alors qu'il se base sur le Header pour indique l'encodage de la page dans le menu Affichage -> encodage ... Je me trompe?

    Je continue mes recherches car j'aimerais éviter de tout passer en utf-8...

  11. #11
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par tipou75 Voir le message
    Quand j'affiche le source de ma page, les caractères accentués ne sont pas encodés. A priori, il n'y a pas de ré-écriture par le proxy
    Si, justement : je ne parle pas de transformer é en &eacute; mais de transformer le é encodage ISO-8859-1 en é encodage UTF-8. Si tes accents sont écris en ISO-8859-1 côté serveur (ce qui semble être le cas car sinon, quand tu ne passes pas par le proxy, ils s'afficheraient mal) et qu'ils s'affichent bien alors que le navigateur considère que la page est en UTF-8, c'est qu'il y a eu conversion d'encodage entre les 2, et c'est pas le navigateur qui l'a faite.

    Citation Envoyé par tipou75 Voir le message
    Je pensais que le browser utilisait le charset du META pour encoder les pages alors qu'il se base sur le Header pour indique l'encodage de la page dans le menu Affichage -> encodage ... Je me trompe?
    Je pense que le navigateur est cohérent (à condition d'avoir bien choisi l'option "auto-détection" de l'encodage) : s'il affiche UTF-8 dans le menu c'est qu'il a utilisé UTF-8 pour interpréter et afficher la page.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    oups, désolé pour le retour tardif,

    ben voilà, pour l'encodage tu as raison, c'est mon appServer qui encode pageEncodeing="ISO-8859-1" dans mes JSP.

    Sinon, j'ai reussi à me passer du proxy_html sans grosse modif

    Si quelqu'un peut faire un retour sur la version 3 du proxy_html, ca serait cool car le problème demeurre toujours... A moins de tout passer en UTF-8 comme tu l'indiquait...

    En tout cas, merci pour ta participation


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de charset avec un include
    Par mims1664 dans le forum Langage
    Réponses: 3
    Dernier message: 17/11/2009, 23h20
  2. Problème de charset avec traduction Google
    Par Booster2ooo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/02/2009, 23h10
  3. Problème de charset avec un script ASP
    Par torobravo dans le forum ASP
    Réponses: 6
    Dernier message: 10/01/2008, 19h30
  4. Réponses: 7
    Dernier message: 26/04/2007, 13h21
  5. Problèmes de versions avec Xalan, Xerces et Java
    Par honeyz dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 05/06/2003, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo