Guzzle 是一个 PHP HTTP 客户端库,用于发送 HTTP 请求并处理响应。它提供了丰富的功能来管理请求和响应,包括设置请求头、处理重定向、上传文件等。
你提到 Guzzle 似乎从请求 URL 中剥离了密码部分。这通常是因为 Guzzle 在处理 URL 时,默认会对 URL 进行一些规范化处理,可能会导致密码部分被剥离。
为了避免这个问题,你可以采取以下几种方法:
withCredentials
选项如果你在使用 Guzzle 发送跨域请求,可以尝试使用 withCredentials
选项来确保凭证信息被正确传递。
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://example.com',
'verify' => false,
]);
$response = $client->request('GET', '/api', [
'query' => ['param' => 'value'],
'headers' => ['Authorization' => 'Bearer token'],
'with_credentials' => true,
]);
你可以手动拼接 URL,确保密码部分不被剥离。
use GuzzleHttp\Client;
$client = new Client();
$url = 'https://username:password@example.com/api';
$response = $client->request('GET', $url);
auth
选项Guzzle 提供了 auth
选项,可以用来设置基本认证。
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('GET', 'https://example.com/api', [
'auth' => ['username', 'password'],
]);
通过以上方法,你应该能够解决 Guzzle 从请求 URL 中剥离密码部分的问题。如果问题依然存在,请检查 Guzzle 的版本和相关配置,确保没有其他因素影响 URL 的处理。
领取专属 10元无门槛券
手把手带您无忧上云