首页 > 解决方案 > 标头中的多个 set-cookies 相互重写 curl

问题描述

如果响应头包含两个Set-Cookie值,如示例中所示:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=***; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Sat, 12 Sep 2020 15:26:07 GMT
Content-Length: 14713
Set-Cookie: BIGipServerauto-ext-vla216-pool=***; path=/; Httponly

,然后带参数

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);

由于覆盖,cUrl 将仅写入最后一个文件。

有没有更好的方法,然后手动读取标题并通过 写入文件file_put_contents,为这种情况存储多个 cookie?

标签: phpcurlcookies

解决方案


Curl 确实接受来自不同Set-Cookie标头的 cookie。

看一下文档:

https://curl.haxx.se/libcurl/c/CURLOPT_COOKIEFILE.html

CURLOPT_COOKIEFILE - 从中​​读取 cookie 的文件名

https://curl.haxx.se/libcurl/c/CURLOPT_COOKIEJAR.html

CURLOPT_COOKIEJAR - 存储 cookie 的文件名


推荐阅读