Javascript AngularJS API令牌
我想用Dribbble的API构建一些东西 当我阅读API文档时,我需要将标题设置为我的API_密钥Javascript AngularJS API令牌,javascript,angularjs,Javascript,Angularjs,我想用Dribbble的API构建一些东西 当我阅读API文档时,我需要将标题设置为我的API_密钥 var token = 'MY TOKEN HERE'; $http({ method: 'GET', url: 'https://api.dribbble.com/v1/my_user', headers: { 'Auth
var token = 'MY TOKEN HERE';
$http({
method: 'GET',
url: 'https://api.dribbble.com/v1/my_user',
headers: {
'Authorization': 'Bearer ' + token
}
}).success(function() { ... });
是否可能隐藏令牌,从而阻止用户在页面源代码中看到我的API密钥
有人能告诉我在$http中使用API密钥的最佳实践是什么吗?您最好的选择可能是创建自己的web服务并调用dribble API服务器端。要保护像客户端这样的信息,您无法做任何事情 dribble可能会将您的api请求作为主机名和密钥的组合进行验证,因此这可能不是您认为的重要问题
tl;dr-没有什么是安全的客户端。您最好的选择可能是创建自己的web服务并调用dribble api服务器端。要保护像客户端这样的信息,您无法做任何事情 dribble可能会将您的api请求作为主机名和密钥的组合进行验证,因此这可能不是您认为的重要问题
tl;dr-没有任何东西是安全的客户端。当我需要在Angular JS中创建自定义头时,我通常使用此方法。 在使用$http的模块开始时,我为get和post设置了如下标题
$http.defaults.headers.get = { 'apikeyName' : 'yourkey' }
$http.defaults.headers.post = { 'apikeyName' : 'yourkey' }
然后,每次您在该模块中使用$http时,都会发送这些头,而无需每次都指定它们
是否可能隐藏令牌,从而阻止用户在页面源代码中看到我的API密钥?不,您的Angular JS是客户端,因此每个客户端都可以看到密钥。(见以上答案)
当我需要在Angular JS中创建自定义标题时,我通常使用此方法。 在使用$http的模块开始时,我为get和post设置了如下标题
$http.defaults.headers.get = { 'apikeyName' : 'yourkey' }
$http.defaults.headers.post = { 'apikeyName' : 'yourkey' }
然后,每次您在该模块中使用$http时,都会发送这些头,而无需每次都指定它们
是否可能隐藏令牌,从而阻止用户在页面源代码中看到我的API密钥?不,您的Angular JS是客户端,因此每个客户端都可以看到密钥。(见以上答案)
善意的问候如果API密钥在JavaScript中的某个地方,那么您无法完全保护它。这就是为什么许多第三方服务要求您提供您将从中调用其API的域,以便只有当密钥来自您注册的域时,他们才能验证密钥
保护API密钥的正确方法是创建一个发出请求的服务器端包装器,并从JavaScript调用它。即使在服务器端代码中硬编码API密钥也是一个坏主意——最好的做法是将它们设置为环境变量。如果API密钥在JavaScript中的某个地方,您也无法完全保护它。这就是为什么许多第三方服务要求您提供您将从中调用其API的域,以便只有当密钥来自您注册的域时,他们才能验证密钥 保护API密钥的正确方法是创建一个发出请求的服务器端包装器,并从JavaScript调用它。甚至在服务器端代码中硬编码API键也是一个坏主意——最好的做法是将它们设置为环境变量