【问题标题】:CURL get header return different with get_headersCURL 获取标头返回与 get_headers 不同
【发布时间】:2012-11-16 08:03:20
【问题描述】:

我想从文件中获取标题。 但 CURL 返回值与 get_headers 不同。

不知道为什么。 结果如下:

使用 get_headers

Array
(
    [0] => HTTP/1.0 200 OK
    [1] => Content-Type: image/jpeg
    [2] => Last-Modified: Wed, 14 Nov 2012 11:06:07 GMT
    [3] => X-Cache-Status: HIT
    [4] => Expires: Tue, 19 Jan 2038 03:14:07 GMT
    [5] => Cache-Control: max-age=2592000
    [6] => X-Cache: HIT
    [7] => Content-Length: 120185
    [8] => Connection: close
    [9] => Date: Fri, 16 Nov 2012 08:01:15 GMT
    [10] => Server: lighttpd/1.4.26
)

CURL 没有 Content-Type ~> 这就是我想要的

Array
(
    [0] => HTTP/1.1 200 OK
    [1] => Content-Length: 120185
    [2] => Connection: close
    [3] => Date: Fri, 16 Nov 2012 08:01:42 GMT
    [4] => Server: lighttpd/1.4.26
    [5] => 
    [6] => 
)

这是我通过 curl 函数获取的标题

function get_headers_curl($url) 
{ 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL,            $url); 
    curl_setopt($ch, CURLOPT_HEADER,         true); 
    curl_setopt($ch, CURLOPT_NOBODY,         true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT,        15); 

    $r = curl_exec($ch); 
    $r = split("\n", $r); 
    return $r; 
} 

如果我设置了返回 Content-Type 的 CURL

curl_setopt($ch,CURLOPT_HTTPGET,true);

但它也会返回文件内容(正文),如何仅使用 CURL 而没有文件内容来准确获取文件内容类型?

【问题讨论】:

  • @Baba 你好,我的 PHP 版本是 5.3
  • 是否可以提供图片URL进行测试???即使在 PHP 5.3 上也无法复制您的问题
  • Seen .. 已经看到了这个问题 ... 如果你设置 curl_setopt($ch, CURLOPT_NOBODY, false); 它也可以工作... 让我更深入地了解一下 ..
  • 我认为问题在于 get_headers 发送 GET 请求,而带有 CURLOPT_NOBODY 的 CURL 请求方法将设置为 HEAD。如果你改变 CURLOPT_HTTPGET = true,一切都会好的。 :(
  • 已经看到...为了确定破坏了一些测试...

标签: php curl header content-type


【解决方案1】:

get_headers 正在接收图像的信息,但另一个不是。猜猜你可以检查网址。因为两者必须相同。

【讨论】:

  • CURL 如果我设置 curl_setopt($ch,CURLOPT_HTTPGET,true); ,但它也会返回文件内容?!
【解决方案2】:

很容易获得 CONTENT_TYPE 或其他 cURL 信息:

<?php
// Create a curl handle
$ch = curl_init('link_to_file');

curl_setopt($ch, CURLOPT_NOBODY, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE);

// Execute
curl_exec($ch);

// Check if any error occured
if (!curl_errno($ch)) {
    var_dump(curl_getinfo($ch, CURLINFO_CONTENT_TYPE));
}

// Close handle
curl_close($ch);

输出:

string(10) "图片/jpeg"

【讨论】:

  • 好的,我编辑了代码来处理你的情况,关注 CUSTOMREQUEST 选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 2019-04-07
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多