2010-03-24 3 views
1

Je lance un appel ajax en utilisant la bibliothèque de jQuery dans une API, ce qui nécessite d'ajouter un nom d'utilisateur et un mot de passe codé en base64 dans l'en-tête.Ne pas voir les requêtes Ajax dans Firebug si l'en-tête a été modifié

est ici un exemple de base:

$.ajax({ 
    type: "GET", 
    contentType: 'application/json', 
     beforeSend:function(xhr){ 
     xhr.setRequestHeader("Authentication", "Basic " + base64EncodedValue); 
    } 
    url: 'https://api.company.com/uri/', 
    complete: function(result) { 
     alert(result); 
    } 
}); 

Mais quand cela se déclenche au large, je reçois un message d'alerte noire, il ne semble pas comme si quelque chose revient. Il n'y a pas de journal dans la console Firebug qu'une requête get ajax a été effectuée.

Cependant, si je supprime l'option beforeSend, je vois la requête ajax être enregistrée, mais la requête récupère un 'non autorisé', donc elle est définitivement au bon endroit.

Des idées sur les raisons pour lesquelles cela n'apparaît pas dans Firebug afin que je puisse vérifier que les en-têtes sont correctement envoyés?

Répondre

1

Je dirais que c'est parce que vous ne disposez pas d'un '' avant url ...

$.ajax({ 
    type: "GET", 
    contentType: 'application/json', 
     beforeSend:function(xhr){ 
     xhr.setRequestHeader("Authentication", "Basic " + base64EncodedValue); 
    } 
    ,url: 'https://api.company.com/uri/', 
    complete: function(result) { 
     alert(result); 
    } 
}); 

peut-être tort, mais c'est ma conjecture,

Andrew

+0

Cela lancerait une erreur JS, pas le problème. –

0

Ayant tout juste avait un problème similaire, il semble que JQuery ne supporte pas la définition de l'en-tête Authentication pour une requête interdomaine.

J'ai eu, dans un script servi de port 80:

$.ajax({ 
     beforeSend : function(req) { 
      req.setRequestHeader('Authorization', auth); 
     }, 
     url: 'http://localhost:8282/Blahblah', 
     success: function(data) { 
      console.log("data=" + data); 
     } 
    }); 

Et je ne vois pas l'en-tête étant autorization situé sur la demande. Je l'ai changé pour

$.ajax({ 
     beforeSend : function(req) { 
      req.setRequestHeader('Authorization', auth); 
     }, 
     url: 'http://localhost/Blahblah', 
     success: function(data) { 
      console.log("data=" + data); 
     } 
    }); 

Ce qui semble se produire est que JQuery détecte que ce soit une demande inter-domaines (dans mon cas à cause de la différence dans le port, dans votre cas probablement à cause d'un autre hôte?) et passe silencieusement à JSONP qui ne prend pas en charge Basic Auth.

Voir How do I make a JSONP call with JQuery with Basic Authentication?

Je me rends compte que votre question est vieux, mais Google m'a emmené ici et il pourrait prendre d'autres ici.

Questions connexes