$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 dotyczy nazwę użytkownika i hasło osobno. Zakodowanie całego adresu URL zakodowałoby także separatory schematu i autorytetu potrzebne do znalezienia nasłuchiwacza.

Proxy HTTP przenosi połączenie HTTPS API przez CONNECT. Konto proxy nie zastępuje uwierzytelniania API, a wymuszanie http_version na 2.0 nie jest potrzebne do logowania przez proxy.

Lista no_proxy oddzielona przecinkami wybiera zamierzone hosty bezpośrednie. Bez jawnych opcji komponent może zamiast tego użyć obsługiwanych ustawień środowiska.

Tworzy to CurlHttpClient bezpośrednio, co wymaga transportu cURL w PHP. Ogólna fabryka Symfony może wybrać inny backend. W przypadku utrzymującego się odrzucenia zidentyfikuj wybrany transport i zachowaj błąd etapu proxy zamiast przenosić konto do nagłówka Authorization miejsca docelowego.

Powiązane artykuły