Как на php реализовать проброску post запроса на другой адрес?

Добрый день.
Я сам 1С-к, но потребовалось сделать страничку, которая бы post запрос отправленный на нее перенаправляла на другой адрес.
По поиску пишут что можно и CURL, или открытием сокета, или стандартным методом.

// Создать контекст и инициализировать POST запрос
    $context = stream_context_create(array(
        'http' => array(
            'method' => 'POST',
            'header' => 'Content-Type: application/x-www-form-urlencoded' . PHP_EOL,
            'content' => QUERY,
        ),
    ));

    // Отправить запрос
    echo file_get_contents(
        $file = "http://................................",
        $use_include_path = false,
        $context);

Подойдет ли такой способ, и как выцепить данные заголовка, тела запроса, передаваемых файлов и заполнить ими нужные свойства ?

P.S. Это необходимо для бот чатов, telegram, viber и другие отправляют запрос только на https с сертификатом, планирую развернуть на heroku, и далее отправлять на http сервис свой.
  • Вопрос задан
  • 397 просмотров
Решения вопроса 1
mxms
@mxms
IT voodoo
Удалил предыдущий пост т.к. неверно понял искомое.
Тогда как-то так (не проверял):
$indata = file_get_contents("php://input"); 

$newdata = array(
        "http" => array(
                "method" => "POST",
                "header" => 
                	"HTTP/1.1" . "\r\n" .
                	"Content-Type: application/octet-stream" . "\r\n" .
                	"Content-Length: " . strlen($indata) . "\r\n",
                	"Content" => $indata,
        ),
);

$outdata = file_get_contents("http://where.to/redirect", false, stream_context_create($newdata));

file_put_contents("php://output", $outdata);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mannaro
@mannaro
Умею профессионально гуглить
Может стоит просто подключить LetsEncrypt и не надо будет таких махинаций? :)

А вообще - это обычное проксирование. Советую взять подходящий для этого инструмент, например, nginx или caddy.

Но если уж совсем надо, то гуглить "php proxy".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы