[英]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.