$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ælder for brugernavnet og adgangskoden separat. Kodning af hele URL'en ville også kode de skema- og autoritetsseparatorer, der er nødvendige for at finde lytteren.

HTTP-proxyen bærer HTTPS-API-forbindelsen gennem CONNECT. Proxykontoen erstatter ikke API-godkendelse, og det er ikke nødvendigt at tvinge http_version til 2.0 for proxy-login.

Den kommaadskilte no_proxy-liste vælger de tilsigtede direkte værter. Uden eksplicitte valgmuligheder kan komponenten i stedet bruge sine understøttede miljøindstillinger.

Dette konstruerer CurlHttpClient direkte, hvilket kræver PHPs cURL-transport. Symfony's generiske fabrik kan vælge en anden backend. Ved en resterende afvisning skal du identificere den valgte transport og bevare fejlen fra proxy-trinnet i stedet for at flytte kontoen til en Authorization-header for destinationen.

Relaterede artikler