1

我正在尝试向域发出 curl 请求:http://xyz.com。这是我的代码。

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_URL, $strURL);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $arrData);

    curl_exec($ch);

在发出请求时,它会被重定向到其中的某个页面,并且不会返回到我的页面。

我怎样才能停止在 curl 请求中间被重定向。

对不起各位...

在提出建议后,我尝试将 CURLOPT_FOLLOWLOCATION 设置为 0 并且它起作用了......这是我的错误,我没有删除下一行标题重定向并且它继续传递和传递......

抱歉,是我的错。

再一次... CURLOPT_FOLLOWLOCATION 到 0 不会转移...

4

3 回答 3

1

尝试使用该CURLOPT_MAXREDIRS选项。

CURLOPT_MAXREDIRS:要遵循的 HTTP 重定向的最大数量。将此选项与 CURLOPT_FOLLOWLOCATION 一起使用。

于 2012-06-01T08:48:57.903 回答
1

我认为因为该页面会检查您的用户代理或设置 cookie,所以您需要尽可能地尝试模仿网络浏览器。

就像添加用户代理一样:

    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7');

或尝试设置cookie:

    $cookieJar = tempnam ("/tmp", "CURLCOOKIE");
    curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookieJar);

如果您提供网址,也许我可以提供更多帮助。

于 2012-06-01T09:02:36.413 回答
0

尝试玩:

  1. CURLOPT_RETURNTRANSFER,

  2. CURLOPT_FOLLOWLOCATION,

  3. CURLOPT_COOKIEJAR,

  4. CURLOPT_COOKIEFILE

并考虑记录,使用它进行调试更容易!

$handle = fopen('log.tmp', 'w');
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_STDERR, $handle);
于 2012-06-01T09:17:42.247 回答