web-dev-qa-db-fra.com

Comment masquer les requêtes ajax depuis la console firebug?

Comment masquer les demandes ajax depuis la console firebug ou quoi que ce soit qui montre les appels ajax?

19
niksmac

Faites des appels _ JSONP . Les appels JSONP ne sont pas de vraies demandes ajax (car ils n'utilisent pas d'objet XMLHttpRequest et injectent simplement une balise de script dans le DOM). Mais ils ne seront pas montrés dans Firebug.

7
Saeed Neamati

S'il vous plaît, appelez cette fonction après succès ou échec ajax:

$('.result').load('testtemplateboth/testpagetpl');
clearconsole();

function clearconsole() { 
  console.log(window.console);
  if(window.console || window.console.firebug) {
   console.clear();
  }
}

OU 

$('.log').ajaxComplete(function() { 
  clearconsole();
  $(this).text('Triggered ajaxComplete handler.');
});

function clearconsole() { 
  console.log(window.console);
  if(window.console || window.console.firebug) {
   console.clear();
  }
}
11
Vinoth M

Comme décrit ici ( https://getfirebug.com/wiki/index.php/Console_Panel ), vous pouvez le définir dans l'onglet about: config, en modifiant la valeur extensions.firebug.showXMLHttpRequests.

8
rashtao

Utilisez un websocket binaire.

Bien que certains navigateurs autorisent encore les utilisateurs à "inspecter" le contenu des paquets websocket, cela est généralement limité aux websockets texte et beaucoup plus difficile aux données binaires ... et ne sera certainement pas affiché dans la console.

C'est l'approche que Livereload ( http://livereload.com/ ) utilise pour éviter de spammer la console avec des demandes ajax qui rendent l'utilisation de la console plus utile.

Évidemment, comme l'ont indiqué les autres articles de ce fil de discussion, vous ne pouvez pas empêcher quelqu'un de saisir les demandes à l'aide d'outils tels que Wireshark; mais on pourrait soutenir qu'un socket Web binaire découragerait 90% des tentatives de falsification occasionnelles que vous pourriez obtenir avec des demandes ajax standard.

5
Doug

J'ai essayé jQuery mais il utilisait toujours des appels ajax normaux. Selon les docs: les requêtes avec "JSONP" ou "script" dataType et le type "GET" doivent résulter en "script" mode de transport . Cela fonctionne de cette façon:

Côté client :

var h = $('head')[0];
var e = document.createElement('SCRIPT');
e.src = "/c.php?getRefresh=1"+("&_="+(+new Date()));
e.onload = function(){
    //script from server executed       
    h.removeChild(e);
}
h.appendChild(e);   

Du côté serveur :

if(isset($_GET['getRefresh'])){
    header("Content-Type: text/javascript");
    die("console.log('OK');");
}
3
user669677

Je ne pense pas que vous serez capable de cacher complètement les appels à un logiciel de détection, car certains logiciels de détection fonctionnent à un niveau très bas (si bas que vous ne pouvez pas y accéder à partir d'un navigateur/code).

Si vous souhaitez masquer un appel (par exemple, masquer son emplacement), vous pouvez l'envoyer à votre propre serveur. Le serveur peut alors effectuer lui-même l'appel (à l'aide de commandes masquées).

Comme appeler http://myserver.com/doCommand?command=cmd1&parameter1=param1&parameter2=param2

Et le serveur peut avoir la logique qui lira la commande et les paramètres, les exécutera puis fera rapport avec les résultats. Quoi qu'il en soit, l'appel entre le client (navigateur) et votre serveur peut être intercepté par le logiciel de détection.

Cela ressemble beaucoup à un proxy. Le client peut voir ce qui va au proxy, mais il ne saura pas ce qui se passera ensuite.

Quoi qu'il en soit, vous avez un problème d'architecture après avoir masqué les appels de l'appelant et non du monde extérieur.

1
Pavel Donchev

Comme ce que Saeed disait avec JSONP, vous pouvez changer la source d'un attribut "src" d'image/fichier/script. Le serveur enverra la demande lorsqu’elle changera, permettant ainsi de communiquer avec le serveur. Je n'ai pas essayé cela, mais je cherche à le mettre en œuvre moi-même.

0
cjroth