2017-10-17 3 views
0

Je voudrais faire une requête ajax directement effectuée par le client sur le bureau.Comment cacher une clé API dans la requête AJAX

Problème est ma requête ajax besoin d'un "secret api clé". Je ne veux pas que le client ait accès à cette clé api.

Voici mon Code actuellement js:

var url = 'myurl';     
    var obj = new Object(); 
    obj.api_key   = "myKeyIwantToHide"; 
    $.ajax({ url: url, 
       type: 'post', 
       dataType: 'json', 
       data: obj, 
       cache: false, 
       success: function(result){ 
        alert(result); 
       } 
    }); 

Il est possible de cacher des informations au client avec javascript pour faire ma demande ajax.

Thx, Christophe

+7

Vous ne pouvez pas cacher quoi que ce soit dans JavaScript côté client. – Roberrrt

+3

S'il est envoyé au client, le client a accès. Si vous devez garder la clé secrète, vous devrez créer un proxy sur votre propre serveur. – Pointy

+0

Si vous avez le contrôle du serveur, vous devriez envisager d'utiliser JWT pour l'authentification. – Baruch

Répondre

-1

Vous ne pouvez pas cacher la clé api complètement client. Mais si votre client est non technique. Vous pouvez le rendre difficile pour lui/elle de trouver la clef d'api. Si vous utilisez MVC, vous pouvez définir la clé api lorsque la première requête est envoyée à la méthode Index et, au retour, vous pouvez la définir en une variable javascript. De cette façon, l'utilisateur ne pourra pas voir la valeur codée en dur contrairement au code que vous avez montré. Si vous utilisez ASP.NET, vous pouvez facilement utiliser ViewBag pour définir la valeur de la variable javascript à l'aide de la syntaxe du rasoir.

+0

En supposant des choses comme "mais si votre client est non technique." est un peu une mauvaise pratique à avoir en cours de programmation ... –