有没有办法让 PHP 重定向到新页面,并传递 HTTP-AUTH?
我一直在使用 cURL,作为这里的第二个示例: Sending basic authentication information via form
不幸的是,当我这样做时,实际的 URL(显示在浏览器 URL 栏中)仍然是原始 PHP 的 URL,而不是我正在浏览的目标。
这是我到目前为止所得到的:
<?php
$user = "xyz";
$pass = "abc";
$userpass = $user . ":" . $pass;
$url = "http://website/directory/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $userpass);
$result = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpcode == 200){
header("Authorization: Basic " . base64_encode($userpass));
echo $result;
}else{
header("Location: http://website/login.php");
}
?>
我也试过替换上面的尾端:
if($httpcode == 200){
header("Authorization: Basic " . base64_encode($userpass));
header("Location: http://website/directory/");
}else{
header("Location: http://website/login.php");
}
但这失败了;它重定向到http://website.xyz/directory,但它没有传入用户/密码,并且在到达时我会看到来自服务器的登录信息。
从技术上讲,以下工作。但是,与在 HREF 中传递用户/密码相比,我更喜欢更优雅的解决方案:
header("Location: http://" . $userpass . "website/directory/");