卷曲,跟随位置,但仅获取新位置的标头?

问题描述

| 我知道,当我将CURLOPT_FOLLOWLOCATION设置为true时,cURL将跟随Location标头并重定向到新页面。但是,是否有可能只获得新页面标题而没有实际重定向到那里?还是不可能?     

解决方法

否。您必须禁用“ 0”,从响应中提取重定向URL,然后使用该URL发出新的HEAD请求。     ,似乎是PHP cURL的副本:不重定向而获取重定向的目标 但是,这可以通过3个简单的步骤完成: 步骤1.初始化卷曲
curl_init($ch); //initialise the curl handle
//COOKIESESSION is optional,use if you want to keep cookies in memory
curl_setopt($ch,CURLOPT_COOKIESESSION,true);
第2步。获取ѭ2的标题
curl_setopt($ch,CURLOPT_URL,$url); //specify your URL
curl_setopt($ch,CURLOPT_HEADER,true); //include headers in http data
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,false); //don\'t follow redirects
$http_data = curl_exec($ch); //hit the $url
$curl_info = curl_getinfo($ch);
$headers = substr($http_data,$curl_info[\"header_size\"]); //split out header
步骤3.解析标头以获取新的URL
preg_match(\"!\\r\\n(?:Location|URI): *(.*?) *\\r\\n!\",$headers,$matches);
$url = $matches[1];
有了新的URL后,您可以根据需要重复执行步骤2-3。     ,将
CURLOPT_FOLLOWLOCATION
设置为
false
,将
CURLOPT_HEADER
设置为
true
,然后从响应头中获取\“ Location \”。     ,对于分析标头,您可以使用CURLOPT_HEADERFUNCTION     ,是的,您可以将其设置为遵循重定向,直到获得标题响应中的最后一个位置。 获得最后重定向的函数:
function get_redirect_final_target($url)
{
    $ch = curl_init($url);        
    curl_setopt($ch,CURLOPT_NOBODY,1);
    curl_setopt($ch,1); // follow redirects
    curl_setopt($ch,CURLOPT_AUTOREFERER,1); // set referer on redirect
    curl_setopt($ch,false); // if you want to print the header response change false to true
    $response = curl_exec($ch);
    $target = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
    curl_close($ch);
    if ($target)
        return $target; // the location you want
    return false;
}
    ,确保将“ 7”设置为True以获取响应中的标题,否则响应以空白字符串形式返回