我正在尝试从我网站上的页面中提取wiki文档(redmine)。我成功检索到重定向到登录页面,发送用户名和密码字段,但随后我到达了一个带有来自redmine的红宝石重定向的页面,我无法继续前进。 redmine文件“response.rb”中的ruby代码是:
def redirect(url, status)
self.status = status
self.location = url.gsub(/[\r\n]/, '')
self.body = "<html><body>You are being <a href=\"#{CGI.escapeHTML(url)}\">redirected</a>.</body></html>"
end
我不太了解ruby来修改redmine的代码,所以有没有办法在php中做到这一点?
答案 0 :(得分:1)
curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, true);
告诉cURL遵循任何正确配置的重定向(发送Location:标头的任何内容)。
答案 1 :(得分:0)
找到了另一种解决方案!
如果其他人遇到redmine或任何其他重定向的问题:
使用cURL获取需要验证的安全页面。
<?php
$tempFilename = tempnam("/tmp", "COOKIE");
// Login
$curlHandle = curl_init("http://bob.com/login");
curl_setopt($curlHandle, CURLOPT_COOKIEJAR, $tempFilename);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
$dataArray = array(
"username" => "bob",
"password" => "password"
);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $dataArray);
$output = curl_exec($curlHandle);
// Getting the wiki
$curlHandle = curl_init("http://bob.com/wiki");
curl_setopt($curlHandle, CURLOPT_COOKIEFILE, $tempFilename);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curlHandle);
echo $output;
?>