【发布时间】:2014-02-21 22:59:45
【问题描述】:
我试图避免 cURL 通过“CURLOPT_COOKIEJAR”将 cookie 会话存储到实际文件中。所以我创建了一个方法来捕获/解析 cookie 到一个局部变量 - 然后通过“CURLOPT_COOKIE”使用它来恢复 cookie 会话。
我通过
切掉了 cookiepreg_match_all("/^Set-cookie: (.*?);/ism", $header, $cookies);
要使用“CURLOPT_COOKIE”,我们使用 key=value 并通过“;”将它们分开。但是(据我所知), CURLOPT_COOKIE 不允许您输入各种标志,即到期、安全标志等。
2014 年 1 月 29 日下午 6:45 更新
所以我认为我的问题实际上发生在 CURLOPT_FOLLOWLOCATION 发生的地方。我认为这与国旗无关。在跟随一个新位置时,我的手动 cookie 会话似乎没有更新(即,一个站点有 2-3 个重定向来附加各种 cookie/会话)。这实际上是有道理的,因为利用 CURLOPT_COOKIEJAR 将直接获取/更新在标头重定向上发送的 cookie。因此,我尝试在获取/附加最新的 cookie 时创建手动重定向路径 - 但是由于某种原因,这种方法不起作用。
2014 年 1 月 30 日下午 4:22 更新
几乎搞定了。将很快更新答案。事实证明我的方法工作得很好,只需正确跳转手动重定向页面即可。
2014 年 1 月 30 日下午 4:51 更新 问题已解决 - 在下面回答我自己。
【问题讨论】:
-
但是你可以使用 curlopt header 来设置cookie,嗯?
-
@MaximKhan-Magomedov 我们使用 curlopt 标头来设置 cookie,但不用于存储。 cURL 使用 cookiejar - 但这需要磁盘上的固定文件,这是您想要避免的(在大规模生产环境中)。将 cookie 会话保留在磁盘上存在安全风险。