php curl - 遵循相对路径

时间:2012-11-01 19:33:49

标签: php curl

  

可能重复:
  Is it possible to use curl with relative path in PHP?

我一直在努力让脚本工作,这将遵循相关网址。

问题的快速摘要。

我正在使用FOLLOWLOCATION选项来关注网址,但是当网址为:

/redirectPage.html
像这样卷曲:

localhost/redirectPage.html

这是我的代码:

$ch = curl_init();

//set options
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTP_VERSION, 'CURL_HTTP_VERSION_1_1');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);


$content = curl_exec($ch);


curl_close($ch);

我发现的一些“解决方案”涉及解析DOM文档并用绝对URL替换href属性,但我正在寻找一种允许我仍然使用FOLLOWLOCATION的解决方案。有没有办法在curl中设置基本URL,或者捕获FOLLOWLOCATION选项中后面跟着的重定向URL并为其附加一个字符串?

请帮忙。

1 个答案:

答案 0 :(得分:0)

FOLLOWLOCATION允许cURL关注响应标题中的Location: /redirects。但是不允许您下载相对URL。

您需要自己解析网址。要解析相对URL,您需要使用绝对URL作为参考。但是你在哪里提供给cURL?你没有,你不能,你不应该。

清理和解析网址是你的工作。不是HTTP客户端。 cURL解析相对Location: headers。但不是基于可能从未存在的页面的某些先前内存的相对URL请求。