Guzzle HTTP - 将授权标头直接添加到请求中

Posted

技术标签:

【中文标题】Guzzle HTTP - 将授权标头直接添加到请求中【英文标题】:Guzzle HTTP - add Authorization header directly into request 【发布时间】:2016-06-30 22:08:57 【问题描述】:

谁能解释如何在 Guzzle 中添加授权标头?我可以看到下面的代码可用于添加用户名和密码,但在我的实例中,我只想添加授权标头本身

$client->request('GET', '/get', ['auth' => ['username', 'password']

我想添加到我的 GET 请求的基本授权标头:-

Basic aGdkZQ1vOjBmNmFmYzdhMjhiMjcwZmE4YjEwOTQwMjc2NGQ3NDgxM2JhMjJkZjZlM2JlMzU5MTVlNGRkMTVlMGJlMWFiYmI=

【问题讨论】:

【参考方案1】:

我不知道我是如何错过阅读您正在寻找 Basic auth 标头的信息,但仍然希望这会有所帮助。如果您只是想添加 Authorization 标头,那应该很容易。

// Set various headers on a request
$client->request('GET', '/get', [
'headers' => [
    'Authorization'     => 'PUT WHATEVER YOU WANT HERE'
    ]
]);

我在 Guzzle 中逐步建立我的请求,因此我使用以下内容:

$client = new GuzzleHttp\Client();
$request = $client->createRequest('GET', '/get');
$request->addHeader('X-Authorization', 'OAuth realm=<OAUTH STUFF HERE>');
$resp = $client->send($request);

希望对您有所帮助。此外,请确保包含您将来使用的库版本,因为语法会根据您的版本发生变化。

【讨论】:

【参考方案2】:

我正在使用 Guzzle 6。如果您想使用基本身份验证方案:

$client = new Client();
$credentials = base64_encode('username:password');
$response = $client->get('url',
        [
            'headers' => [
                'Authorization' => 'Basic ' . $credentials,
            ],
        ]);

【讨论】:

【参考方案3】:

从外观上看,您正在尝试使用 API 密钥。要获得您想要的效果,只需将null 作为用户名传入,如下所示。

$client->request(
    $method,
    $url,
    [
        'auth' => [
            null,
            $api_key
        ],
    ]
);

【讨论】:

变量赋值不正确,你有 'auth' = [【参考方案4】:
use GuzzleHttp\Client;

...

$client = new Client(['auth' => [$username, $password]]);
$res = $client->request('GET', 'url', ['query' => ['param1'=>$p1, 'param2'=>'sometext']]);
$res->getStatusCode();
$response = $res->getBody();

这将创建一个授权客户端并发送一个获取请求以及所需的参数

【讨论】:

以上是关于Guzzle HTTP - 将授权标头直接添加到请求中的主要内容,如果未能解决你的问题,请参考以下文章

登录操作后在 Guzzle HTTP 客户端中设置 Authorization Bearer 标头 - Laravel

骆驼如何将授权标头添加到休息路线?

如何在传入的http请求标头中添加授权令牌[关闭]

添加授权标头时出现CORS错误

如何将承载令牌添加到 HTTP 请求的标头?

在 HTTP-Request 中使用 JWT 发送授权标头