CURL(PHP)并在POST之后重定向

时间:2019-01-28 17:42:54

标签: php curl redirect post location

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

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

请帮助我找到解决方案。我检查了很多搜索引擎结果,但都没有碰到运气。我只找到一些有关命令行卷曲的建议,而没有关于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',
));

1 个答案:

答案 0 :(得分:0)

是否只是将curl收到的标头传递给浏览器?

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