Envoyé par : lfournier
Date : 06/09/2007 15:13
Bonjour,
Sous Firefox3 (Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;rv:1.9a8pre) Gecko/2007090504 Minefield/3.0a8pre) les requêtes Ajax pour télécharger un fichier ne semblent plus marcher plus alors qu'elles fonctionnent bien sous FF2. L'exemple de CGI en Python ci dessous retourne une chaîne XML sous FF2 et un message Erreur Status 500 sous FF3 J'ai posté un ticket sous Bugzilla 393968, mais j'aimerais savoir si j'ai oublié quelquechose dans mon code. Par exemple une tolérance sous FF2 par rapport à la norme HTTP. Je n'ai aucune idée comment contourner cette régression apparente !
Peut être avez vous m'aider ?
#!/usr/bin/python import cgi class ajax: def __init__(self): self.fo = cgi.FieldStorage() print 'Content-type: application/vnd.mozilla.xul+xml\n' print '<?xml version="1.0" encoding="ISO-8859-1"?>' if self.fo.has_key('a'): print '<a>OK</a>' else: print '<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="run()">' self.js() print '<description>Test</description></window>' def js(self): print """<script language="javascript"> <![CDATA[ function run() { var msg = '\\n--AaB03x\\ncontent-disposition: form-data; name="a"; filename="z"\\n' + 'Content-Type: application/octet-stream\\n' + 'Content-Transfer-Encoding: binary\\n\\n' + 'AAAAA_content_AAAAA' + '\\n--AaB03x\\n'; var a1 = new ajax(msg,function(res) { alert((new XMLSerializer()).serializeToString(res));}); a1.doGet(); } function ajax(params, cb) { var req = new XMLHttpRequest(); req.onreadystatechange = processRequest; function processRequest () { if (req.readyState == 4) { if (req.status == 200) { if (cb) cb(req.responseXML); } else { alert('Error status:'+ req.status); } } } this.doGet = function() { req.open('POST', 'tst_ajax.py', true); req.setRequestHeader('Content-Type', 'multipart/form-data; boundary="AaB03x"'); req.setRequestHeader('Content-length', params.length); req.setRequestHeader('Connection', 'close'); req.send(params); } } ]]> </script> """ if __name__ == '__main__': ajax()
Envoyé par : Paul Rouget
Date : 06/09/2007 16:34
vaut mieux que tu postes le contenu de la page web.
Envoyé par : Raphael
Date : 07/09/2007 08:13
Je suis d'accord, j'utilise d'habitude XR 1.9a4 et sous Win/Linux, je télécharge bien...
La semaine dernière, j'ai voulu passer à XR 1.9a8pre, et bien la version Linux marche toujours pour le téléchargement, mais plus la version Windows, j'ai été obligé de reprendre la 1.9a4.
Envoyé par : lfournier
Date : 07/09/2007 14:49
J'ai trouvé l'origine du mal ! Regardons la trame HTTP POST envoyée au serveur. (pour info, j'ai utilisé un outil M$ Fiddler pour cela)
sous FF3:
POST /tramwaytool/tstajax.py HTTP/1.1 Host: faugeres.france.rockwellcollins.com:8008 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a8pre) Gecko/2007090604 Minefield/3.0a8pre Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Proxy-Connection: keep-alive Content-Type: multipart/form-data;charset=UTF-8 Referer: http://faugeres.france.rockwellcollins.com:8008/tramwaytool/tstajax.py Content-Length: 152 Cookie: MODULE=SAAB2000_AEWC; REPOSITORY=%2Fcvs%2FDT313%2FRTU; SERVER=cvsdt Authorization: Basic bGZvdXJuaWU6YXF0aHJvdCwy Pragma: no-cache Cache-Control: no-cache
sous FF2
POST /tramwaytool/tstajax.py HTTP/1.1 Host: faugeres.france.rockwellcollins.com:8008 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Proxy-Connection: keep-alive Content-Type: multipart/form-data; boundary="xx" Connection: close Referer: http://faugeres.france.rockwellcollins.com:8008/tramwaytool/tstajax.py Content-Length: 152 Cookie: REPOSITORY=%2Fcvs%2FDT313%2FRTU; SERVER=cvsdt; MODULE=SAAB2000_AEWC Authorization: Basic bGZvdXJuaWU6YXF0aHJvdCwy Pragma: no-cache Cache-Control: no-cache
l'attribut boundary n'est pas transmit !
Maintenant, si quelqu'un connait la nouvelle syntaxe FF3M8 pour déclarer le champ bondary, je suis preneur !
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.