借助此插图,如何实现服务器到服务器的数据

时间:2019-04-19 19:47:46

标签: php api curl

我在本地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密钥和其他凭据的副本,任何人都可以访问。

1 个答案:

答案 0 :(得分:0)

我知道了。我使用了cURL POST方法,它比使用GET更安全。并解析数组变量以验证主要参数。