Kan PHP cURL het IP-adres van de bezoeker gebruiken?
Legt uit welke machine een server-side cURL-verbinding opent en wat een proxy nodig heeft om die route te wijzigen.
Een bezoeker klikt op een knop. Je PHP-server roept een externe API aan. De API ziet de uitgaande verbinding van de server, of de exit van de proxy die voor die verbinding is geconfigureerd. De browser van de bezoeker onderhoudt een aparte verbinding met je website.
Het adres van de bezoeker in een header kopiëren kan de PHP-verbinding niet naar het netwerk van de bezoeker verplaatsen. Headers zijn gegevens die over een al opgezette verbinding worden verzonden. Een bestemming kan in haar eigen applicatielogica een vertrouwde forwarding-header gebruiken, maar daarmee wordt de waarde van de header nog niet het bronadres van de verbinding.
Een proxy moet de verbinding accepteren
Om PHP cURL via een andere machine te laten lopen, moet die machine een bereikbare proxyservice bieden met toestemming om het verzoek door te geven. Het PHP-proces moet er verbinding mee kunnen maken. Een gewone browsersessie van een bezoeker levert je server zo'n algemeen proxy-eindpunt niet op.
De proxy-optie van libcurl kiest de dienst waarmee cURL verbinding maakt. Hij kan een willekeurige browser niet vragen het verzoek namens hem te starten.
Een browserverzoek is een ander ontwerp
Voor sommige API's kan de browser de bestemming rechtstreeks aanroepen. Daarmee komt het verzoek op het netwerkpad van de gebruiker, afhankelijk van zijn eigen proxyconfiguratie. Het vereist ook een API die voor browserclients is ontworpen. Toegang tussen origins volgt CORS, en inloggegevens die naar browsercode worden gestuurd, komen voor die client beschikbaar.
Bepaal waar het verzoek thuishoort voordat je een proxy-optie kiest. Houd serverreferenties op de server; gebruik een gedocumenteerde browserintegratie wanneer de dienst die ondersteunt. Geen van beide ontwerpen biedt een betrouwbare kortere route om een serververzoek de netwerkidentiteit van een bezoeker te laten erven.