Настройка URL аутентифицированного прокси в Symfony CurlHttpClient
Кодируйте компоненты учетной записи прокси и оставляйте явными назначение API, исключения no_proxy и выбор транспорта.
$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 назначения.