2008-09-26 7 views
3

Lorsque j'essaie d'envoyer une requête HTTP GET via XMLHttpRequest, elle fonctionne sur un HTTP non sécurisé.Comment faire fonctionner XMLHttpRequest sur HTTPS sur Firefox?

Mais lorsqu'ils sont envoyés via HTTPS, les différents navigateurs ont donné des résultats différents:

sur Firefox 3.0.2: - La demande GET n'atteint pas le serveur web.

Sur IE 7: - La requête GET a atteint le serveur Web.

Est-ce que cela a quelque chose à voir avec Firefox 3 devenant plus strict avec des certificats non approuvés? Y a-t-il un moyen de contourner cela?

J'ai déjà ajouté l'URL comme exception dans le gestionnaire de certificats de Firefox. La console d'erreur ne signale aucune erreur. J'ai ajouté un try-catch autour de open() et de send de XMLHttpRequest. Aucune exception n'est levée. L'utilisation du chemin d'URL absolu et relatif ne fonctionne pas.

est ici l'extrait de code:

var xmlHttp; 
    try 
    { 
     // Firefox, Opera 8.0+, Safari 
     xmlHttp=new XMLHttpRequest(); 
    } 
    catch (e) 
    { 
     // Internet Explorer 
     try 
     { 
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) 
     { 
      try 
      { 
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e) 
      { 
       return false; 
      } 
     } 
    } 
    // we won't be handling any HTTP response 
    xmlHttp.onreadystatechange=function() 
    { 
     // do nothing.. 
    } 
    // send HTTP GET request 
    try 
    { 
     xmlHttp.open("GET", "/[relative path to request]", true); 
     xmlHttp.send(null); 
    } 
    catch (e) 
    { 
     alert('Error sending HTTP GET request!'); 
     return false; 
    } 

Merci, Kenneth

Répondre

0

Par hasard, vous demandez une URL non-HTTPS dans une page HTTPS? Des messages apparaissent-ils dans le journal des erreurs/la console?

+0

J'ai mis à jour la question. – ksuralta

+0

L'utilisation explicite de HTTPS comme URL ne fonctionne pas également. Aucun message d'erreur signalé sur la console d'erreur de Firefox. – ksuralta

1

Essayez de placer votre fermeture après l'ouverture:

// send HTTP GET request 
try 
{ 
    xmlHttp.open("GET", "/[relative path to request]", true); 
} 
catch (e) 
{ 
    alert('Error sending HTTP GET request!'); 
    return false; 
} 
// we won't be handling any HTTP response 
xmlHttp.onreadystatechange=function() 
{ 
    // do nothing.. 
} 

// Then send it. 
xmlHttp.send(null); 

Un peu googler trouvé confirmation: http://www.ghastlyfop.com/blog/2007/01/onreadystate-changes-in-firefox.html

Bien que le document dit d'attacher la fonction après .send (null), j'ai toujours attaché après ouverture.

Questions connexes