【问题标题】:How to hide an api key in AJAX request如何在 AJAX 请求中隐藏 api 密钥
【发布时间】:2017-10-17 13:02:38
【问题描述】:

我想做一个客户端直接在桌面上完成的ajax请求。

问题是我的 ajax 请求需要一个“秘密 api 密钥”。我不希望客户端有权访问此 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 请求。

谢谢, 克里斯托夫

【问题讨论】:

  • 你不能在 JavaScript 客户端隐藏任何东西。
  • 如果发给客户端,客户端就有访问权限。如果您需要保密,则必须在自己的服务器上创建代理。
  • 如果您可以控制服务器,您应该考虑使用 JWT 进行身份验证。

标签: javascript jquery ajax key hide


【解决方案1】:

您不能对客户端完全隐藏 api 密钥。但是,如果您的客户不是技术人员。你可以让他/她很难找到 api 密钥。如果您使用 MVC,则可以在第一个请求发送到 Index 方法时设置 api 键,并在返回时将其设置为 javascript 变量。这样,与您显示的代码不同,用户将无法看到硬编码的值。如果您使用的是 ASP.NET,那么您可以使用 razor 语法轻松地使用 ViewBag 将值设置为 javascript 变量。

【讨论】:

  • 假设诸如“但是如果您的客户不是技术人员”。编程时有点不好的习惯......