[OSM-dev-fr] Aide html/javascript
Tyndare
tyndare at wanadoo.fr
Lun 28 Avr 14:16:39 UTC 2014
Le 28 avril 2014 14:36, Philippe Verdy <verdy_p at wanadoo.fr> a écrit :
> Ce ne serait pas une limite de sécurité des XmlHttpRequest imposée par IE8
> pour une requête inter-domaine qui empêche la requête de s'exécuter ?
A mon avis, étant donné qu'on ne précise pas le domaine de la requête
il s'agit d'une requête sur le même domaine.
> Deux lignes bizarres (dans ton main.js):
>
> xhr.setRequestHeader( "Content-length", params.length );
> xhr.setRequestHeader( "Connection", "close" );
>
> Pour la première ce n'est pas la bonne valeur, car tu compte le nombre de
> caractères UTF-16 de la chaîne Javascript et non son encodage dans la
> requête (UTF-8) et aussi il manque le réencodage HTTP des sauts de ligne.
> Tout dépend de ce qui est dans params.
> De plus tu utilises à la fois des param_tres POST et des paramètres GET dans
> une requête POST:
> xhr.open("POST", "getDepartement.php?ville=" + ville, true );
> Pour pas simplement dans ce cas ne pas tout mettre dans la query string et
> utiliser une requête GET?
Ce n'est pas moi qui avait écrit cette partie à la base, je n'ai pas
voulu trop la changer pour éviter de casser un truc qui marche, mais
effectivement une requête GET semblerais plus logique.
> Pour la seconde, Connection:close est suspect. A priori on ne précise que la
> condition keep-alive (si la requête se fait en HTTP/1.0 et sinon rien en
> HTTP/1.1).
>
> Les deux entêtes Connection:close et Content-length:* sont marqués "unsafe"
> par la console de Chrome mais je soupçonne que le vieux XmlHTTPRequest d'IE8
> soit plus radical et rejette ta requête. A priori c'est au composant
> XMLHttpRequest de s'en charger.
>
> Enfin XMLHttpRequest dans IE a été un activeX nécessitant une autorisation
> spéciale et qui peut sinon t'empêcher de faire une requête interdomaine.
> Mais ici l'URL que tu utilises dans xhr.open() ne précise pas le domaine et
> si XmlHTTPRequest est un composant externe, il n'aura pas accès tout seul à
> l'URL de base de ton document. Il faut alors préciser l'URL complète et pas
> une URL relative;
Le composant axtiveX c'était je crois pour ie6, pas ie8.
Plus d'informations sur la liste de diffusion dev-fr