php – 使用HTTP-AUTH重定向?
发布时间:2020-12-13 16:50:26 所属栏目:PHP教程 来源:网络整理
导读:有没有办法让 PHP重定向到新页面,并传递HTTP-AUTH? 我一直在使用cURL,作为第二个例子: Sending basic authentication information via form 不幸的是,当我这样做时,实际的URL(显示在浏览器URL栏中)仍然是原始PHP的URL,而不是我正在浏览的目标. 这是我到目
有没有办法让
PHP重定向到新页面,并传递HTTP-AUTH?
我一直在使用cURL,作为第二个例子: 不幸的是,当我这样做时,实际的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中传递user / pass更优雅的解决方案: header("Location: http://" . $userpass . "website/directory/"); 解决方法
尝试将身份验证与网址一起传递.像这样:
header('Location: http://username:password@website/directory/'); 由于base64与纯文本一样不安全,因此不应该存在额外的安全风险.浏览器不会显示用户:传递地址栏中URL的相关部分.但是浏览器会显示一个消息框(或其他内容),让您确认是否要使用用户名登录此站点:yourusername (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |