$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 프록시는 CONNECT를 통해 HTTPS API 연결을 전달합니다. 프록시 계정은 API 인증을 대체하지 않으며, 프록시 로그인을 위해 http_version을(를) 2.0으로 강제할 필요는 없습니다.

쉼표로 구분된 no_proxy 목록은 의도한 직접 호스트를 선택합니다. 명시적 옵션이 없으면 구성 요소는 대신 지원되는 환경 설정을 사용할 수 있습니다.

이것은 CurlHttpClient을(를) 직접 생성하므로 PHP의 cURL 전송이 필요합니다. Symfony의 일반 팩토리는 다른 백엔드를 선택할 수 있습니다. 거부가 남아 있으면 선택된 전송을 식별하고, 계정을 대상 Authorization 헤더로 옮기는 대신 프록시 단계의 오류를 유지하세요.

관련 글