我在本地PC上设置了两个虚拟主机,第一个域是http://dev.local,而另一个则处理api请求http://api.server.local/。这个想法很简单,但是不确定如何实现这种设置。这是实际过程。 dev.local将发送一些重要的参数和值,API服务器首先将其读取并验证从dev.local发送的数据。
例如,我有从API服务器提供的API密钥,并且与只能使用该API的域一起存储在数据库中。因此,最重要的是,我想确保只有dev.local可以执行请求。这是一些例子。
[插图] https://i.imgur.com/OKu34TM.png
我已经尝试了cURL函数,但是由于某些原因,只要拥有api键的副本,任何人都可以访问该数据。因此,我想确保请求的来源或请求的来源。
这是我为dev.local使用的脚本,用于访问api.server.local
<?php
$__apiServer = 'http://api.server.local';
$__apiVersion = '1.0';
$__apikey = '7c4a8d09ca3762af61e59520943dc26494f8941b'; // API Key
$__apiEmail = 'johnsmith99@gmail.com'; // Registered Email Address
$__apiUser = 'johnsmith'; // Username
$__curlURL = "";
$__curlURL = "{$__curlURL}{$__apiServer}/v{$__apiVersion}";
$__curlURL = "{$__curlURL}/bin.php?user={$__apiUser}";
$__curlURL = "{$__curlURL}&email={$__apiEmail}";
$__curlURL = "{$__curlURL}&key=$__apikey";
$__curlURL = "{$__curlURL}&domain=$_SERVER[SERVER_NAME]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $__curlURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
if(curl_exec($ch) === FALSE) {
echo "Failed to load resource files from the API Server: $__apiServer";
} else {
$__curlURL = curl_exec($ch);
if($err != 1){
eval(' ?>' . $__curlURL);
}
}
curl_close($ch);
我希望只有在所需数据有效时才能返回该值。目前,可以按预期方式读取输出,但是只要拥有api密钥和其他凭据的副本,任何人都可以访问。
答案 0 :(得分:0)
我知道了。我使用了cURL POST方法,它比使用GET更安全。并解析数组变量以验证主要参数。