如何在AJAX请求中隐藏api密钥

问题描述:

我想直接在桌面上完成客户端的ajax请求。如何在AJAX请求中隐藏api密钥

问题是我的ajax请求需要一个“secret api Key”。我不希望客户端有权访问此api密钥。

这里我目前的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); 
       } 
    }); 

有可能隐藏在订单信息与JavaScript客户端来完成我的Ajax请求。

THX, 克里斯托夫

+7

您无法在JavaScript客户端中隐藏任何内容。 – Roberrrt

+3

如果发送给客户端,则客户端可以访问。如果您需要保留密钥,您必须在自己的服务器上创建代理。 – Pointy

+0

如果您有服务器的控制权,您应该使用JWT进行身份验证。 – Baruch

您不能从客户端完全隐藏API密钥。但是,如果你的客户是非技术性的。你可以让他/她难以找到API密钥。如果您使用的是MVC,则可以在将第一个请求发送到Index方法时设置API密钥,并在返回时将其设置为JavaScript变量。通过这种方式,用户将无法看到硬编码的值,与您所显示的代码不同。如果您使用的是ASP.NET,那么您可以使用ViewBag轻松使用Razor语法将值设置为javascript变量。

+0

假设像“但如果你的客户是非技术性的”。编程时有一种不好的做法... –