根据 curl 文档:
/* TRUE to include the header in the output. */
curl_setopt($Curl_Connection, CURLOPT_HEADER, TRUE);
因此标头被添加到 curl_exec 命令的输出中。我一直在吐出这个,我看不出有任何方法可以将标头与响应正文分开检索。当您开始读取压缩输出(压缩、膨胀)时,情况会变得更糟
最重要的是,它是一个大字符串,而不是数组,因此如果您希望标题采用诸如 curl_getinfo 之类的格式,则会返回一个数组。
最简单的方法是这样做:
$backend_output = curl_exec($ch);
list( $backend_response_headers, $backend_response_body)
= explode("\r\n\r\n", $backend_output, 2);
这将把这两个分开,但你最终会得到一个响应头的字符串,而不是一个更有帮助的数组。现在从中制作一个数组并不那么明显,即使使用正则表达式,因为您无法拆分例如像 /(\w)\s:(\w)/ 这样简单的东西,因为 ':' 可能出现在某些字段中. 如果 curl 单独提供标题会非常酷,但就我浏览文档而言,它似乎不存在。
关于您的会话 cookie,我相信您需要为此使用 CURLOPT_COOKIESESSION = true 选项,但我对 cookie 的经验较少,因为我几乎没有专业需要使用它们。祝你好运
更新:如果您缺少 pecl,您可以使用http://php.net/manual/en/function.http-parse-headers.php或用户评论部分中的自定义函数解析标题。