【问题标题】:CURL (PHP) and redirect after POSTCURL (PHP) 并在 POST 后重定向
【发布时间】:2019-06-21 18:43:52
【问题描述】:

我使用 CURL 和 PHP 来镜像远程网站,它工作正常,但是当我尝试使用参数发出 POST 请求时,在 CURL 收到来自远程服务器的带有新“Location:”标头的回复后,它不会发送到用户浏览器(我只在卷曲标题中看到它)。

我需要在 POST 查询到远程站点后将用户重定向到新位置。此位置由远程服务器的标头回复收到,但未提供给最终用户浏览器。

请帮助我找到解决方案。我检查了很多搜索引擎结果,但没有运气。我只找到一些命令行 curl 的建议,而不是 PHP。

谢谢!

curl_setopt_array($curl,$x=array(
    //CURLOPT_HEADER=>1,
    CURLINFO_HEADER_OUT=>1,
    CURLOPT_RETURNTRANSFER=>1,
    CURLOPT_FOLLOWLOCATION=>true,
    CURLOPT_MAXREDIRS=>7,
    CURLOPT_AUTOREFERER=>true,
    CURLOPT_PROXY=>$proxy,
    CURLOPT_PROXYTYPE=>7,
    //CURLOPT_COOKIESESSION=>false,
    CURLOPT_COOKIEFILE=>$_SESSION['cookie_4'],
    CURLOPT_COOKIEJAR=>$_SESSION['cookie_4'],
    CURLOPT_REFERER=>$referer,
    CURLOPT_ENCODING=>"gzip",
    CURLOPT_HTTPHEADER=>array(
        "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language: en-US,en;q=0.5",
        "Accept-Encoding: gzip, deflate",
        "Cache-Control: no-cache",
        "Connection: keep-alive",
        "Pragma: no-cache",
        "Upgrade-Insecure-Requests: 1",

    ),
    CURLOPT_USERAGENT=>/*isset($_SERVER['HTTP_USER_AGENT']) ? (string)$_SERVER['HTTP_USER_AGENT'] : */'Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0',
));

【问题讨论】:

    标签: php curl redirect post location


    【解决方案1】:

    只是将 curl 收到的 headers 传递给浏览器?

    curl_setopt($curl,CURLOPT_HEADERFUNCTION,function($ch,$header){
        header($header);
        return strlen($header);
    });
    

    【讨论】:

    • 错误:无法调用 CURLOPT_HEADERFUNCTION
    • @Storm78 你什么时候收到这个错误的?在 curl_exec() 期间?
    猜你喜欢
    • 2017-09-14
    • 2021-12-04
    • 2011-11-02
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多