Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# XUL/AJAX requête Post Multi part Upload - FF3

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()

# Re: XUL/AJAX requête Post Multi part Upload - FF3

Envoyé par : Paul Rouget

Date : 06/09/2007 16:34

vaut mieux que tu postes le contenu de la page web.

# Re: XUL/AJAX requête Post Multi part Upload - FF3

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.

# Re: XUL/AJAX requête Post Multi part Upload - FF3

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.