簡體   English   中英

AngularJS API令牌

[英]AngularJS API token

我想用dribbbble的API構建一些東西。

在閱讀API文檔時,我需要將HEADER設置為API_KEY。

 var token = 'MY TOKEN HERE';

 $http({
                    method: 'GET',
                    url: 'https://api.dribbble.com/v1/my_user',
                    headers: {
                        'Authorization': 'Bearer ' + token
                    }
                }).success(function() { ... });

是否可以隱藏令牌,從而阻止用戶在頁面源中看到我的API KEY?

有人可以向我解釋在$ http中使用API​​ KEYS的最佳做法是什么?

最好的選擇是創建自己的Web服務並調用運球api服務器端。 您根本無法采取任何措施來保護該客戶端等信息。

運球有可能將您的api請求驗證為主機名和密鑰的組合,因此您認為可能不是一個重要的問題。

tl; dr- 沒有什么是安全的客戶端。

如果您的API密鑰在JavaScript中的某個位置,則無法采取任何措施完全保護您的API密鑰。 這就是為什么許多第三方服務要求您提供從中調用其API的域,以便它們僅在密鑰來自您注冊的域時才可以驗證密鑰的原因。

保護API密鑰的正確方法是創建一個服務器端包裝程序,該包裝程序將發出請求,並從JavaScript進行調用。 甚至將API密鑰硬編碼在服務器端代碼中也是一個壞主意-最佳實踐是將它們設置為環境變量。

當我需要在Angular JS中創建自定義標頭時,通常會使用此方法。 在使用$ http的Module的開頭,我像這樣設置get和post的標頭。

$http.defaults.headers.get = { 'apikeyName' : 'yourkey' }
$http.defaults.headers.post = { 'apikeyName' : 'yourkey' }

然后,每當您在該模塊中使用$ http時,就會發送這些標頭,而無需每次都指定它們。

是否可以隱藏令牌,從而阻止用戶在頁面源中看到我的API KEY? 不,您的Angular JS是客戶端,因此每個客戶端都可以看到密鑰。 (請參見上面的答案)

親切的問候

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM