$proxy = 'http://'
    . rawurlencode($proxyUser) . ':'
    . rawurlencode($proxyPassword)
    . '@proxy.example:8080';

$client = new \Symfony\Component\HttpClient\CurlHttpClient([
    'proxy' => $proxy,
    'no_proxy' => 'localhost,internal.example',
]);
$response = $client->request('GET', 'https://api.example/items');
$status = $response->getStatusCode();

rawurlencode gäller för användarnamnet och lösenordet separat. Att koda hela URL:en skulle också koda schema- och auktoritetsavgränsarna som behövs för att hitta lyssnaren.

HTTP-proxyn transporterar HTTPS-API-anslutningen via CONNECT. Proxykontot ersätter inte API-autentisering, och det är inte nödvändigt att tvinga http_version till 2.0 för proxyinloggning.

Den kommaavgränsade no_proxy-listan väljer de avsedda direkta värdarna. Utan explicita alternativ kan komponenten i stället använda sina stödda miljöinställningar.

Detta konstruerar CurlHttpClient direkt, vilket kräver PHPs cURL-transport. Symfony:s generiska fabrik kan välja en annan backend. Vid en kvarstående avvisning, identifiera den valda transporten och behåll felet från proxy-steget i stället för att flytta kontot till en Authorization-header för destinationen.

Relaterade artiklar