当我做
$h = get_headers('http://www.weebly.com');
效果很好...该页面的标题会立即返回。
但是如果我尝试使用curl使用显式HEAD请求检索标头...
$url = 'http://www.weebly.com';
$request_headers = array(
'Connection: close',
);
$user_agent = 'curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15';
$ch = curl_init($url);
curl_setopt_array($ch, array(
CURLOPT_CUSTOMREQUEST => 'HEAD',
CURLOPT_HEADER => TRUE,
CURLOPT_HTTPHEADER => $request_headers,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_FOLLOWLOCATION => TRUE,
CURLOPT_MAXREDIRS => 10,
CURLOPT_USERAGENT => $user_agent,
));
$result = curl_exec($ch);
请求未完成。
我的CURL设置有什么问题?此方法适用于http://www.google.com上的其他网站,但对于某些网站如weebly来说,最终却挂起了。
因为libcurl会像使用GET一样起作用,但是您只能在对HEAD的实际请求中更改该方法,这很麻烦,因为HEAD响应可能具有Content-Length:头,但没有响应主体。
让libcurl执行HEAD并期望HEAD响应的“正确”方法是改用CURLOPT_NOBODY。
CURLOPT_CUSTOMREQUEST仅应用于更改方法关键字,而不能用于更改行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句