如何从Guzzle客户端检索cookie?

问题描述 投票:0回答:3

在请求发生后,如何从 Guzzle 请求/客户端检索 cookie?

$client = new Client([
    'base_uri' => 'www.google.com',
]);
$response = $client->request('GET', '/');
php guzzle
3个回答
33
投票

阅读文档。您必须使用

CookieJar
类来处理 cookie。

$client = new \GuzzleHttp\Client(['cookies' => true]);
$r = $client->request('GET', 'http://httpbin.org/cookies');

$cookieJar = $client->getConfig('cookies');
$cookieJar->toArray();

4
投票

刚刚更新这篇文章。

在 Guzzle 8.0 版本中,

getConfig()
方法将为
@deprecated
阅读文档。

您可以从示例代码中获取cookie:

$client = new Client([
        'base_uri' => 'YOUR_URI',
    ]);
    
$response = $client->post('PATH');

$headerSetCookies = $response->getHeader('Set-Cookie');

$cookies = [];
foreach ($headerSetCookies as $key => $header) {
    $cookie = SetCookie::fromString($header);
    $cookie->setDomain('YOUR_DOMAIN');

    $cookies[] = $cookie;
}

$cookieJar = new CookieJar(false, $cookies);

使用的话:

$client->post('PATH', [
    'cookies' => $cookieJar
]);

0
投票

使用 Guzzle v7,您可以使用这个:

$jar = new \GuzzleHttp\Cookie\SessionCookieJar('session');
(new \GuzzleHttp\Client())->get('https://www.google.com', ['cookies' => $jar]);
var_dump($jar);

文档在这里 或者,如果您不希望 cookie 持续存在,您可以使用

CookieJar

© www.soinside.com 2019 - 2024. All rights reserved.