如何在客户端Javascript中隐藏API密钥

现在我正在编写一个客户端javascript应用程序,它向USPS Price Calculator API发出请求。 为了发出此请求,我需要在请求的xml中提供我的API用户ID。 标签如下所示: 。 我的问题是:有什么方法可以将我的用户ID提供给javascript,同时仍然将其隐藏在查看客户端文件的用户身上。 现在,我唯一的解决方案是在我的服务器中创建一个具有User ID的PHP文件,然后在客户端javascript中使用AJAX请求将其存储在全局变量中。 它看起来像这样:

 var userID; $.get("/secrets.php", function( data ) { userID = data; }); 

这是否足以让我的应用程序用户看不到我的API用户ID? 我还能做什么?

简而言之:不,您无法在客户端应用中保护您的API密钥。

本文将详细介绍一些内容

两种选择

  • 使API调用服务器端,然后从那里向客户端提供信息
  • 要求客户端使用自己的API密钥

即使使用PHP解决方案,也无法隐藏userId。 通过访问consle.log(userId); ,可以在浏览器控制台中轻松打印consle.log(userId); 。 据我所知,客户端可用的任何东西都很脆弱,很容易被解码。 即使您混淆了api密钥,它仍然可以从客户端解码。

正确的做法是围绕需要密钥的API调用创建一个PHP包装器,然后从Javascript调用该包装器。