Javascript 在JS中调用API时,如何识别API的用户?
我构建了一个API,人们可以在javascript中使用它(客户端,而不是Node.js)。问题是我需要知道谁在使用我的API。如果我让人们在对我的API的ajax调用中包含API键,任何人都可以看到他们的API键并使用它 如果API的用户是从JS调用的,我如何识别他们Javascript 在JS中调用API时,如何识别API的用户?,javascript,api,Javascript,Api,我构建了一个API,人们可以在javascript中使用它(客户端,而不是Node.js)。问题是我需要知道谁在使用我的API。如果我让人们在对我的API的ajax调用中包含API键,任何人都可以看到他们的API键并使用它 如果API的用户是从JS调用的,我如何识别他们 $.ajax(function(){ url: "http://usefulapi.com/get-things?api_key=123412341234134", // Anybody can see my API key
$.ajax(function(){
url: "http://usefulapi.com/get-things?api_key=123412341234134", // Anybody can see my API key.
data: { some_data }
});
通常,我们对API访问使用公钥和私钥加密的组合。私钥只有API知道,您可以基于公钥和私钥创建哈希,并在服务器端检查它们是否匹配 接下来,将密钥限制在特定域是一个好主意。在PHP中,您可以轻松地使用
$\u服务器['HTTP\u ORIGIN']
超级全局来检查请求来自何处。以下伪代码应该为您提供一些指针:
$domain = basename($_SERVER['HTTP_ORIGIN']);
$apiKey = $_REQUEST['api_key'];
// Now, get the private key for this domain
// Check the private and public keys match
// The request is either allowed or denied.
正如您将看到的,值得向数据库中添加一个身份验证表,并将域、公钥和私钥存储在其中,以便您可以对请求进行身份验证。1)使用公钥和私钥加密。2) 仅将密钥分配给域,以便密钥仅在请求来自特定域时有效。API是用什么语言编写的?在本例中是PHP?节点,但我认为它也与我需要处理的rails API相关