【发布时间】:2017-11-27 08:35:36
【问题描述】:
我正在使用 cURL 来绕过重定向(301、302)和特殊 URL,例如 adf.ly 等。我有一个工作代码,但我无法解决这个特定问题:
当我使用 cURL 跟随 location 参数时,在某些网站上,最后一次重定向可能在其 Location: 结果中有一个相对 url。
为了清楚起见,我在自己的网站中添加了这样的重定向。我正在使用
header("Location: /maintenance"); exit();
在我的 PHP 代码中进行演示。我提出了这个快速的 cURL 请求:
$url = "http://deci.deals/post/99/comment/427";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1712.4 Safari/537.36');
curl_setopt($ch, CURLOPT_HEADER, 1);
$data = curl_exec( $ch );
curl_close($ch);
echo("<br/>CURRENT_URL: ".$url);
if ( preg_match_all( '/Location:\s*(.+)\s*$/im', $data, $matches, PREG_SET_ORDER ) ) {
$last = array_pop( $matches );
echo "<br/>FOUND: ".$last[1];
}
输出:
CURRENT_URL: http://deci.deals/post/99/comment/427
FOUND: /maintenance
如您所见,Location 值是一个相对 URL。有没有办法获取绝对 URL 而不是这个?
谢谢!
【问题讨论】:
-
回声 curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
-
@Robot70 谢谢!信任此 URL 而不是
Location结果是否安全? -
我不知道。这取决于你。
标签: php redirect curl http-status-code-301 http-status-code-302