今天使用guzzle,把cookie写到了header里,发现服务端接收不到,然后查看了下guzzle的文档,对于cookie的使用介绍如下图:
看完还是不知道怎么设置cookie,于是查了下:
use GuzzleHttp\Cookie\CookieJar;
$cookieJar = CookieJar::fromArray([
'PHPSESSID' => 'b68212de1826c64d77b69dc514c2a9cb'
], 'www.devkang.com'); // 此处记得请求域名需要保持跟请求的url host一致,否则不会携带此cookie。
实际方法如上,需要调用GuzzleHttp\Cookie\CookieJa
类的fromArray()
方法,然后把cookie的键值传入,然后在请求中设置cookies
参数:
$response = $client->request('GET', $url, [
'cookies' => $cookieJar,
]);
这样请求中就会携带cookie了。
另外可以在实例化guzzle client时就设置好全局cookie:
$client = new Client([
'cookies' => $cookieJar,
]);