curl 写入 cookie jar 文件,但似乎无法读取

Oli*_*ams 3 curl

我没有使用 PHP CURL,而是简单地作为命令行运行,如下所示:

curl -i -L -c cookies/mywebsite.com.txt -A 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0' https://www.mywebsite.com/
Run Code Online (Sandbox Code Playgroud)

打印结果,我Set-Cookie在标头中收到 PHPSESSID,因此在初次联系时,该站点正在设置会话 cookie,并且我验证 cookie jar 文件cookies/mywebsite.com.txt是否设置了此信息。

但是,我怀疑在我进行的下一页调用(例如 to https://www.mywebsite.com/about-us)中,curl 不会发送上一页的 cookie 信息,因为我注意到我再次获得Set-Cookie标题行,但具有不同的 PHPSESSID 值。

有什么方法可以验证这一点,以及可能是什么原因造成的?

注意:权限不是问题,因为 cookie jar 文件由 www-data(apache 用户)所有,而且显然它正在被写入。它只是没有持久化会话,而且我不知道如何知道curl将什么作为标头发送出去,只知道它正在接收什么。

Oli*_*ams 6

为了发送和接收 cookie,我发现我需要使用-b-c开关执行以下操作:

curl -i -L -b cookies/mywebsite.com -c cookies/mywebsite.com.txt -A 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0' https://www.mywebsite.com/
Run Code Online (Sandbox Code Playgroud)

我在这里找到并使用了第 9.2 节中的最后一个示例: http://curl.haxx.se/docs/httpscripting.html#Cookie_Basics

只是我显然对两者使用相同的文件名。

这解决了问题。希望这对其他人有帮助。