【发布时间】:2018-01-06 11:54:34
【问题描述】:
我正在使用 Guzzle 登录我的 API 站点,当我使用正确的凭据登录时,我会返回一个带有 RefreshToken 的 cookie,以便在下一次调用中发送它,这是我的简单(并且运行良好)代码:
$client = new Client(array(
'cookies' => true
));
$response = $client->request('POST', 'http://myapi.com/login', [
'timeout' => 30,
'form_params' => [
'email' => $request->get('email'),
'password' => $request->get('password'),
]
]);
我用 cookie 得到正确的响应,我可以通过以下方式查看 cookie:
$newCookies = $response->getHeader('set-cookie');
现在,我需要在下一次调用中使用这个 cookie,我知道 Guzzle 可以为我保存 cookie,并在下一次调用中使用“CookieJar”或“SessionCookieJar”自动发送(或不发送),我有尝试使用它,但我没有看到 'jar' 中的 cookie,这是我所做的:
$cookieJar = new SessionCookieJar('SESSION_STORAGE', true);
$client = new Client([
'cookies' => $cookieJar
]);
$response = $client->request ....
但是,当我从 POST 中取回 cookie 时,我只能通过以下方式看到它:
$newCookies = $response->getHeader('set-cookie');
它不在 cookieJar 中,所以它不会在下一次调用中发送它.. 我在这里错过了什么?
谢谢!
【问题讨论】:
-
docs.guzzlephp.org/en/stable/quickstart.html#cookies。您需要为登录请求设置 jar 以便它收集 cookie
-
感谢您的回答,我已经尝试在请求中设置它并且在新客户端初始化中没有任何效果(我已经阅读了很多次手册),您可以添加一些代码吗?跨度>
标签: php cookies laravel-5 guzzle guzzle6