CURLOPT_HEADER返回401

时间:2014-09-25 15:25:00

标签: php curl

我需要获取位置标题。根据我的阅读,这应该像

一样简单
curl_setopt($c, CURLOPT_HEADER, true);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, false);

如果我不包含这两个选项,则curl请求正常,但我无法获取位置标题。

如果我确实包含这两个选项,那么我会收到401错误。

要返回的位置应该是需要额外登录的URL。我做错了什么?

如果它有所作为,我正在做一个PUT。

更新: 事实证明,我在树林里看得太多而在森林里看不够。当生成响应此问题所需的信息时,我意识到问题实际上是在此次呼叫之前的呼叫。

在PUT之前,我需要获得一个会话令牌。由于我在获取会话令牌时没有解析出标头,因此我得到了一个空白的会话令牌,这导致了PUT的401。

1 个答案:

答案 0 :(得分:0)

当您设置curl_exec选项时,HTTP响应标头包含CURLOPT_HEADER的结果。因此,如果您想获取响应标头,则必须使用substr()curl_getinfo(CURLINFO_HEADER_SIZE)从结果中提取响应标头。

以下是一个示例:

$c = curl_init();
// setting options including CURLOPT_HEADER
// ...
$result = curl_exec($c);
$info = curl_getinfo($c);
curl_close($c);
// extracting headers from result:
$n = $info['header_size'];
$headers = rtrim(substr($result, 0, $n));
$content = substr($result, $n);