【发布时间】:2021-07-31 21:19:15
【问题描述】:
我正在使用我的 Laravel 应用程序中的 Guzzle 来 CURL 到另一个 PHP 应用程序。
我遇到的问题是在发出后续 CURL 请求后,会话没有被持久化。这当然是有道理的——因为每个 CURL 请求都是一个唯一的会话。
例如,在我的目标应用程序中,假设我这样做:
$_SESSION['action_id'] = 1234;
然后在我的下一个请求中,我想做:
$action_id = $_SESSION['action_id'];
我收到未定义的索引错误。我查看了有关 cookie 的文档页面 (https://docs.guzzlephp.org/en/latest/quickstart.html#cookies),其中说:
如果您想对所有请求使用共享 cookie jar,可以在客户端构造函数中将 cookie 设置为 true。
所以我尝试如下:
$client = new \GuzzleHttp\Client(['cookies' => true]);
但这并没有什么不同。在我的目标应用程序中,如果我执行var_dump($_COOKIES['PHPSESSID']),它将返回null。 $_COOKIE 本身总是空的。如果我这样做var_dump(session_id()),我每次都会得到不同的值。所以这就是问题所在 - 当我发出后续请求时,我需要访问同一个会话。
有谁知道我如何做到这一点?
【问题讨论】:
-
尝试传递您的 php 会话 cookie 标头,例如在此响应中 stackoverflow.com/questions/63890456/… 。