$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 применяется к имя пользователя и пароль отдельно. Кодирование всего URL также закодировало бы разделители схемы и полномочий, необходимые для поиска слушателя.

HTTP-прокси передает HTTPS-соединение API через CONNECT. Учетная запись прокси не заменяет аутентификацию API, и принудительно задавать http_version как 2.0 для входа через прокси не требуется.

Список no_proxy, разделенный запятыми, выбирает нужные прямые хосты. Без явных параметров компонент может вместо этого использовать поддерживаемые настройки окружения.

Это напрямую создает CurlHttpClient, для чего требуется транспорт cURL в PHP. Универсальная фабрика Symfony может выбрать другой бэкенд. При сохраняющемся отказе определите выбранный транспорт и сохраните ошибку этапа прокси, вместо того чтобы переносить учетную запись в заголовок Authorization назначения.

Похожие статьи