gpt4 book ai didi

php - 如何使用 Guzzle 进行 HTTP 基本身份验证?

转载 作者:IT王子 更新时间:2023-10-29 00:42:18 27 4
gpt4 key购买 nike

我想使用 Guzzle 进行基本的访问身份验证,而且我对编程还很陌生。我不知道该怎么办。我尝试使用 curl 执行此操作,但我的环境需要使用 guzzle。

最佳答案

如果您使用的是 Guzzle 5.0 或更新版本the docs假设基本身份验证是使用 auth 参数指定的:

$client = new GuzzleHttp\Client();
$response = $client->get('http://www.server.com/endpoint', [
'auth' => [
'username',
'password'
]
]);

请注意 syntax is different如果您使用的是 Guzzle 3.0 或更早版本。构造函数不同,您还需要在请求上显式使用 send 方法以获得响应:

$client = new Guzzle\Http\Client();
$request = $client->get('http://www.server.com/endpoint');
$request->setAuth('username', 'password');
$response = $request->send();

一个简短的附录

作为对@Matthwew-Knill 的回应,是的,您可以设置默认授权并隐式地让 Guzzle 在每个进一步的请求中发送它。 @Nick 的回答是正确的。客户端构造函数采用您能想到的每个参数,然后是一些。

如果您想发挥创意,另一种方法是实例化客户端,将默认 header 传递给它,以便在每个进一步的请求中发送。毕竟,简单例份验证是一个 Authorization header 。它的计算方式为:

$client = new Client([
'headers'=>[
'Authorization'=> Basic base64_encode(<username>:<password>)
]
]);

最后但并非最不重要的一点请注意,填写一个简单的身份验证对话框只会发生一次(在第一次访问给定 session 时)。这通常通过在访问者的浏览器上设置 cookie 来实现。该 cookie 又包含足够的信息供服务器识别其匹配的事件 session 。

通常,Guzzle 请求是无状态的,但您可以使用中间件链配置 Guzzle 以修改请求或响应,以用于调试目的,并在此用例中记住 cookie,从而成为部分有状态的。

Please check the detailed procedure in Guzzle Docs .重要的是,通过使用 cookiejar 中间件实例化客户端,因此从那时起让客户端包含它,第一个请求将记住服务器的 set-cookie header ,并将在每次发送时发送它进一步的 cookie header ,使服务器将客户端识别为已登录用户。当然,您也可以自己检查第一个响应的 header ,然后发送它的值。

可能还有其他方法,但我现在想不出其他方法。

关于php - 如何使用 Guzzle 进行 HTTP 基本身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30970736/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com