PHP www-authenticate基本弹出循环问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP www-authenticate基本弹出循环问题相关的知识,希望对你有一定的参考价值。

由于两天我尝试在一个简单的示例代码中找到我的问题:

<?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>";
}

?>

Auth Popup打开正常,我发送用户和密码。但弹出窗口一次又一次地打开。如果我取消弹出窗口,401消息将正确显示。

我试着用.htaccess填充

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

但这没什么改变。感谢您解决此问题的任何想法!

答案

你在PHP上使用什么堆栈?假设它是PHP-CGI,请在.htaccess中尝试以下内容:

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

确保服务器上有qazxsw poi,并解析.htaccess文件(qazxsw poi必须在mod_rewrite中设置为all)。

根据您的基础结构,可能会有某种代理删除auth-header。对于干净的测试环境,我建议安装本地Apache2。像AllowOverride这样的堆栈提供开箱即用的完整开发区域。

以上是关于PHP www-authenticate基本弹出循环问题的主要内容,如果未能解决你的问题,请参考以下文章

从 Spring Boot 中的基本身份验证中删除 WWW-authenticate 标头

Http Basic认证

使用passport-http Basic + passport-local组合时如何防止www-authenticate header

无法以角度访问 $http 响应中的“WWW-authenticate”标头

如何使用浏览器发送授权标头

使用ajax处理www-authentication请求?