如何使用Laravel HTTP客户端发送Cookie?
优先用Laravel官方封装的
withCookies方法,这是最稳妥的方式,不用直接操作Guzzle底层选项:use Illuminate\Support\Facades\Http; $response = Http::withCookies([ 'user_id' => '123', 'session_token' => 'abcxyz' ], 'your-target-domain.com')->get('https://your-target-domain.com/api/data');注意第二个参数必须和请求的目标域名完全一致,否则Cookie不会被正确携带。
如果一定要通过
withOptions用Guzzle的原生方式,必须传入Guzzle的CookieJar实例,不能直接传数组(这也是多数人报错的原因):use Illuminate\Support\Facades\Http; use GuzzleHttp\Cookie\CookieJar; // 初始化CookieJar,绑定对应域名 $cookieJar = CookieJar::fromArray([ 'user_id' => '123', 'session_token' => 'abcxyz' ], 'your-target-domain.com'); // 传入withOptions $response = Http::withOptions([ 'cookies' => $cookieJar ])->get('https://your-target-domain.com/api/data');额外注意:如果Cookie有特定路径要求,可以在创建CookieJar时手动添加Cookie实例来指定:
use GuzzleHttp\Cookie\SetCookie; $cookie = new SetCookie([ 'name' => 'user_id', 'value' => '123', 'domain' => 'your-target-domain.com', 'path' => '/api', 'expires' => time() + 3600, // 1小时后过期 ]); $cookieJar = new CookieJar(); $cookieJar->setCookie($cookie);
内容的提问来源于stack exchange,提问作者Nisar Ahmed
相关产品推荐
相关产品推荐

