加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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,作为第二个例子:
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中传递user / pass更优雅的解决方案:

header("Location: http://" . $userpass . "website/directory/");

解决方法

尝试将身份验证与网址一起传递.像这样:

header('Location: http://username:password@website/directory/');

由于base64与纯文本一样不安全,因此不应该存在额外的安全风险.浏览器不会显示用户:传递地址栏中URL的相关部分.但是浏览器会显示一个消息框(或其他内容),让您确认是否要使用用户名登录此站点:yourusername

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读