¿Puede PHP cURL usar la IP del visitante?
Explica qué máquina abre una conexión cURL del lado del servidor y qué necesitaría un proxy para cambiar esa ruta.
Un visitante pulsa un botón. Tu servidor PHP llama a una API externa. La API ve la conexión saliente del servidor, o la salida de el proxy configurado para esa conexión. El navegador del visitante gestiona una conexión distinta hacia tu sitio web.
Copiar la dirección del visitante en una cabecera no puede mover la conexión de PHP a la red del visitante. Las cabeceras son datos que se envían sobre una conexión ya establecida. Un destino puede usar una cabecera de reenvío de confianza en su propia lógica de aplicación, pero eso no convierte el valor de la cabecera en la dirección de origen de la conexión.
Un proxy tiene que aceptar la conexión
Para enviar PHP cURL a través de otra máquina, esa máquina debe ofrecer un servicio de proxy accesible con permiso para transportar la solicitud. El proceso PHP debe poder conectarse a él. La sesión de navegador normal de un visitante no ofrece a tu servidor ningún punto de conexión de proxy de uso general.
La opción de proxy de libcurl selecciona el servicio al que se conecta cURL. No puede pedir a un navegador arbitrario que origine la solicitud en su nombre.
Una solicitud desde el navegador es otro diseño
Para algunas API, el navegador puede llamar directamente al destino. Eso sitúa la solicitud en la ruta de red del usuario, sujeta a su propia configuración de proxy. También requiere una API diseñada para clientes de navegador. El acceso entre orígenes sigue CORS, y las credenciales enviadas al código del navegador quedan disponibles para ese cliente.
Decide a dónde pertenece la solicitud antes de elegir una opción de proxy. Mantén las credenciales del servidor en el servidor; usa una integración de navegador documentada cuando el servicio la admita. Ninguno de los dos diseños ofrece un atajo fiable para que una solicitud del servidor herede la identidad de red de un visitante.