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 全体をエンコードすると、リスナーを見つけるために必要なスキームとオーソリティの区切り文字までエンコードされます。
HTTP プロキシは CONNECT を介して HTTPS の API 接続を中継します。プロキシ アカウントは API 認証の代わりではなく、プロキシ ログインのために http_version を 2.0 に強制する必要はありません。
カンマ区切りの no_proxy リストは、意図した直接のホストを選択します。明示的なオプションがなければ、コンポーネントは代わりにサポートされている環境設定を使用できます。
これは CurlHttpClient を直接構築するため、PHP の cURL トランスポートが必要です。Symfony の汎用ファクトリでは別のバックエンドを選択できます。拒否が残る場合は、選択されたトランスポートを特定し、アカウントを宛先の Authorization ヘッダーに移すのではなく、プロキシ段階のエラーを保持します。