libcurl当url重定向到自身时如何停止重定向

时间:2012-05-01 12:47:30

标签: c++ redirect libcurl

我使用libcurl获取网页的源代码,一切顺利,直到获得“www.macys.com”的源代码。

如果没有CURLOPT_FOLLOWLOCATION选项,我的程序什么都没有,但是当使用此选项时,重定向位置始终为'/',并且除非我设置了CURLOPT_MAXREDIRS选项,否则curl_easy_perform函数将不会返回。

我的问题是如何通过libcurl获取此网页的源代码? 非常感谢。

我的libcurl版本:7.23.1,操作系统:CentOS 6.0(最终版)x64

2 个答案:

答案 0 :(得分:0)

如果服务器继续重定向客户端,并且您要求客户端遵循重定向,那么您期望它做什么?

唯一的选择是在经过一定数量的步骤后停止,这就是使用CURLOPT_MAXREDIRS的步骤。

这种情况发生的原因主要是因为网站正在检查您的卷曲使用不提供的客户特定细节(用户代理,cookie,引用或类似)。您通常可以使您的卷曲请求更类似于浏览器,然后避免这种影响。

答案 1 :(得分:0)

禁用CURLOPT_FOLLOWLOCATION并手动跟踪重定向以确保不发生循环或将CURLOPT_MAXREDIRS设置为疯狂号码(10),这只能通过自动重定向到达。