Я устанавливаю два виртуальных хоста на моем локальном компьютере, первый домен - 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 и другие учетные данные.