我使用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',
));
答案 0 :(得分:0)
是否只是将curl收到的标头传递给浏览器?
curl_setopt($curl,CURLOPT_HEADERFUNCTION,function($ch,$header){
header($header);
return strlen($header);
});