设置 Symfony CurlHttpClient 的带认证代理 URL
对代理账号的组成部分进行编码,并明确保留 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 还会把定位监听器所需的 scheme 与 authority 分隔符一并编码。
HTTP 代理通过 CONNECT 承载 HTTPS API 连接。代理账号并不替代 API 认证,代理登录也不需要把 http_version 强制设为 2.0。
以逗号分隔的 no_proxy 列表用于选择预期的直连主机。若没有显式选项,组件也可以改用其支持的环境设置。
这会直接构造 CurlHttpClient,因此需要 PHP 的 cURL 传输。Symfony 的通用工厂可以选择其他后端。若仍被拒绝,应确认所选的传输方式并保留代理阶段的错误,而不是把账号移入目标的 Authorization 头。