我一直在尝试使用cur来访问PayPal支付授权网站。
e.g。
... $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $nvp); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $res = curl_exec ($ch); preg_match_all('/Set-Cookie: .*/', $res, $cookieMatches); foreach ($cookieMatches[0] as $cookieMatch) header($cookieMatch); preg_match('/Location: .*/', $res, $locMatches); header($locMatches[0]); header('Vary: Accept-Encoding'); header('Strict-Transport-Security: max-age=500'); header('Transfer-Encoding: chunked'); header('Content-Type: text/html');
原则只是反映原始重定向(我确信有一种更简单的方法可以做到这一点)。但是,PayPal的响应似乎表明存在某种cookie错误。
我的预感是,cookie已经以某种方式链接到原始机器。任何人都可以证实这一点,或者我只是错过了一些明显的东西!
答案 0 :(得分:0)
CURL内置了对cookie的支持(如您所知)。但它很棘手。在我宣布选项
之前,我还没有管理cookiecurl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
第三个参数是存储cookie的文件的名称 - 最好是在temp文件夹中。也许你应该尝试这种方法。
有了这个,重定向工作“自动”。
答案 1 :(得分:0)
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
//SAVE THE COOKIES
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
USE THE COOKIES
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1');
// Follow Where the location will take you, maybe you catch the issue.
由于它在浏览器上工作,它必须使用CURL,除非他们使用javascript设置cookie。 即使他们使用cookie取决于IP地址,尝试从使用curl开始会话,以便他们使用生成的cookie设置您的服务器IP地址。