Посетитель нажимает кнопку. Ваш PHP-сервер обращается к внешнему API. API видит исходящее соединение сервера или выход прокси, настроенного для этого соединения. Браузер посетителя поддерживает отдельное соединение с вашим сайтом.

Копирование адреса посетителя в заголовок не может перенести PHP-соединение в сеть посетителя. Заголовки — это данные, отправляемые по уже установленному соединению. Получатель может использовать доверенный заголовок пересылки в своей логике приложения, но это не превращает значение заголовка в адрес источника соединения.

Прокси должен принять соединение

Чтобы пропустить PHP cURL через другую машину, она должна предоставлять доступный прокси-сервис с разрешением передавать запрос. Процесс PHP должен иметь возможность к нему подключиться. Обычный сеанс браузера посетителя не даёт вашему серверу такой универсальной прокси-точки.

Параметр прокси в libcurl выбирает сервис, к которому подключается cURL. Он не может попросить произвольный браузер инициировать запрос от его имени.

Запрос из браузера — другая схема

Для некоторых API браузер может обращаться к получателю напрямую. Так запрос идёт по сети пользователя с учётом его собственной конфигурации прокси. Для этого также нужен API, рассчитанный на браузерных клиентов. Доступ между источниками подчиняется CORS, а учётные данные, переданные в код браузера, становятся доступны этому клиенту.

Решите, где должен выполняться запрос, прежде чем выбирать вариант прокси. Храните учётные данные сервера на сервере; используйте документированную браузерную интеграцию, если сервис её поддерживает. Ни одна из схем не даёт надёжного короткого пути, позволяющего серверному запросу унаследовать сетевую идентичность посетителя.

Похожие статьи