我有以下代码:
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://www.site.com/check.php?id=1");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)");
$curlData = curl_exec($curl);
curl_close($curl);
echo $curlData;
远程站点上的脚本将执行某项检查,并根据检查结果重定向到一个15x15的小型gif图像。
目前我有CURLOPT_FOLLOWLOCATION, 1
这意味着它将跟随重定向到gif,当我回显$curlData
时,我得到图像的二进制代码,这不是我想要的。
是否可以将curl显示在脚本尝试重定向的位置,而不实际遵循重定向?所以我可以告诉我哪个gif图像重定向我而不是回显gif内容?
谢谢,
答案 0 :(得分:2)
轻松!不要设置CURLOPT_FOLLOWLOCATION
,然后从响应中读取Location
标题。
编辑:所以,更详细一点。标题将是状态行之后的响应行,以\r\n
分隔。您需要拆分这些行,并查找前缀为Location:
的行。这是一个字符串解析练习 - 没什么特别令人兴奋或棘手的。您可以将curl_getinfo
与CURLINFO_HEADER_SIZE
标志一起使用,以发现响应标头部分的总长度。