Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS API令牌_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS 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

我想用Dribbble的API构建一些东西

当我阅读API文档时,我需要将标题设置为我的API_密钥

 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键也是一个坏主意——最好的做法是将它们设置为环境变量