代码之家  ›  专栏  ›  技术社区  ›  Korty

php www authenticate基本弹出循环问题

  •  1
  • Korty  · 技术社区  · 6 年前

    两天来,我试图在一个简单的示例代码中找到我的问题:

    <?php
    
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        header('WWW-Authenticate: Basic realm="My Realm"');
        header('HTTP/1.0 401 Unauthorized');
        echo 'Text to send if user hits Cancel button';
        exit;
    } else {
        echo "<p>Hello {$_SERVER['REMOTE_USER']}.</p>";
        echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
    }
    
    ?>
    

    认证弹出窗口打开良好,我发送用户和密码。但是弹出窗口一次又一次打开。如果取消弹出窗口,401消息将正确显示。

    我试着用

    RewriteRule ^(.*)$ index.php [E=REMOTE_USER:%{HTTP:Authorization},QSA,L]
    

    但这改变不了什么。谢谢你的任何想法来解决这个问题!

    1 回复  |  直到 6 年前
        1
  •  1
  •   Daniel    6 年前

    你在php上使用什么栈?假设是php-cgi,请在.htaccess中尝试以下操作:

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
    </IfModule>
    

    确保,那 mod_rewrite 在服务器上可用,已分析.htaccess文件( AllowOverride 必须设置为All-In httpd.conf )

    根据您的基础结构,可能有某种代理删除auth头。对于干净的测试环境,我建议安装一个本地apache2。堆叠式 xampp 提供开箱即用的全面开发区域。

    推荐文章