Скрипт преобразования ajax запроса в Curl и добавление ему параметров

подскажите как можно написать скрипт(для локального сервера), который будет забирать ajax запрос идущий к нему, и добавлять ему заголовок, а также изменять один параметр тела(json) и перенаправлять измененный запрос уже на сервер с API. Можно, кто-то видел подобно? Вот условная схема: введите сюда описание изображения

Насчёт безопасности, я буду брать пароль и логин из сессии, и соответственно, отсеку "злые" запросы.


Ответы (1 шт):

Автор решения: artemgh

И так, спустя 2 дня и 2 вопроса на Stackoverflow, у меня получился рабочий код (идеи по оптимизации приветствуются, буду сильно благодарен). Исходник:

require "../db.php";       

$urlApi = 'http://my_api/api';
$token = 'mytoken';

// Забираем пользователя и изменяем его id, чтобы нельзя было обратится за другого
$login = $_SESSION['logged_user']->login;
$var = R::findOne('users', 'WHERE `login`=?', [$login]);

$ch = curl_init();

$data = array(); 

$arOptions = [
  CURLOPT_SSL_VERIFYPEER => false,
  CURLOPT_SSL_VERIFYHOST => false,
  CURLOPT_HEADER => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'x-inclo-token:' . $token,
    'Accept: application/json',
    'Content-Type: application/json'
  ],
];

if (isset($_POST)){ 
  foreach($_POST as $key => $value){ // Разбираем массив $_POST
    if ($key == 'url_api'){
      $urlApi = $urlApi . $value;
      curl_setopt($ch, CURLOPT_URL, $urlApi);
    }
    if ($key == 'type'){ 
      if ($value == 'post'){
        curl_setopt($ch, CURLOPT_POST, true);
        $MyFlag = 1;
      }else if($value == 'get'){ 
        curl_setopt($ch, CURLOPT_GET, true);
        $MyFlag = 0;
      }
    }
    $data[$key] = $value;
    // $a[$key]=$value; 
  }
  $data['id'] = $var->id;
}    
if ($MyFlag == 1){
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data, JSON_UNESCAPED_UNICODE));
}
curl_setopt_array($ch, $arOptions);
$res = curl_exec($ch);
curl_close($ch);     
$res = json_encode($res, JSON_UNESCAPED_UNICODE);
echo ($res);

Ajax запрос со страницы пользователя:

$.ajax({
  url: "./Scripts/Interaction_Api.php",
  type: 'POST',
  data: 'dataString',
  datatype: 'json',
  data: {
    type: 'post',
    url_api: '/set',
    setname: array[0],
    clo: array[1],
    geo: ['ru'],
    trafficsource: array[3],
    paranoia: true,
    streamlink: array[5],
  },success: function(data) {
    alert(data);
    if (data == 200){
      return true;
    }else if(data == 400){
      return false;
    }else if (data == 403 && flag == 0){
      // Если ошибка авторизации отправим ещё раз
      Send_set_api(ArraySet, 1);
    }else{
      return false;
    }
  }
}); 

→ Ссылка