所以我使用這個API,它允許我從數據庫抓取數據,以使用json和javascript在我的網站上顯示。我想弄清楚如何保護我的API密鑰。他們說你可以使用java或C#進行調用,然後使用javascript顯示json數據?所以基本上我的想法是,我使用單獨的腳本語言(c#或java,我認爲PHP的工作原理?)進行調用,然後將結果顯示在客戶端,以便將API密鑰隱藏在服務器端代碼中。安全地抓取json數據
我不知道我應該如何做到這一點。有誰知道這在理論上可以做到嗎?
所以我使用這個API,它允許我從數據庫抓取數據,以使用json和javascript在我的網站上顯示。我想弄清楚如何保護我的API密鑰。他們說你可以使用java或C#進行調用,然後使用javascript顯示json數據?所以基本上我的想法是,我使用單獨的腳本語言(c#或java,我認爲PHP的工作原理?)進行調用,然後將結果顯示在客戶端,以便將API密鑰隱藏在服務器端代碼中。安全地抓取json數據
我不知道我應該如何做到這一點。有誰知道這在理論上可以做到嗎?
有幾件事情:
除此之外,你所要求的是完全可能的。最簡單的方法就是查詢一些PHP腳本call_api.php
以及調用的API鏈接。所以(複製你的pastebin代碼),讓我們假設你想打電話:https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/<Some ID>?api_key=<Your API Key>
。與其查詢此鏈接,您可以發送類似api/lol/na/v1.4/summoner/by-name/<Some ID>
的內容作爲call_api.php
的參數。
call_api.php
可以設置如下:
<?php
$_API_KEY = "Your secret API key.";
$requestSuffix = $_REQUEST['suffix']; // This is whatever the API request is
// E.g., "api/lol/na/v1.4/summoner/..."
$requestURL = "https://na.api.pvp.net" . ($requestSuffix[0] != '/' ? '/' : '') . $requestSuffix;
// Now we need to add the secret API to the end of the request URL:
if(strpos($requestSuffix, '?') === False){
// We just need to tack on "?api_key..."
$requestURL .= "?api_key=$_API_KEY";
}else{
// The requested suffix already has a '?' and thus it potentially has
// some parameters already
if(substr($requestURL, -1) == '?'){
// There's just a blank '?' on the end without any parameters yet.
$requestURL .= "api_key=$_API_KEY";
}else{
// The request suffix likely already contains some parameters
// So we'll just add the api key as another parameter
$requestURL .= "&api_key=$_API_KEY";
}
}
// Now with our request URL constructed, we're ready to make the request
$ch = curl_init($requestURL);
// Set the cURL options:
curl_setopt($ch, CURLOPT_HEADER, false); // don't show header in output
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); // prevent cached connections
curl_setopt($ch, CURLOPT_FORBID_REUSE, true); // Don't pool connection for reuse
// Execute the request:
// (by default the response will be directly printed to the output stream or buffer)
curl_exec($ch);
// Make sure the connection is closed to free up resources
curl_close($ch);
?>
所以你只是把這個網站的服務器上,然後就可以使用AJAX提供它的suffix
參數(路徑和可能的參數調用此腳本,該腳本想用作您的查詢到na.api.pvp.net
)。
如果您向我們展示您的代碼,這將有所幫助,但從一般意義上說,無論您使用何種編程語言,如果您發出基於HTTP的POST請求,都可以在旅行時看到內容。您會希望使用基於HTTPS的請求,並嘗試將API密鑰放入發佈請求中。 –
您可以創建一個簡單的NodeJS應用程序來獲取服務器上的數據,並使用[請求](https://github.com/request/request)這樣的API密鑰是安全的請求庫,然後將該數據提供給您申請與[快遞](http://expressjs.com/)。您的客戶端應用程序將從您的節點服務器獲取數據。 – azium
是的,您可以使用服務器應用程序來查詢並返回JSON。它將是一個Web服務器(也可以爲您的JavaScript頁面和資源提供服務)。它託管着API密鑰,並可能緩存返回的數據或對其進行流式處理。然而,不知道這個問題是不是太寬泛來解釋細節。 – eckes