Уже два дня я пытаюсь найти свою проблему в простом примере кода:
<?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 открывается нормально, я отправляю User и Password. Но всплывающее окно открывается снова и снова. Если я отменю всплывающее окно, сообщение 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>
Удостоверься что mod_rewrite
доступен на сервере и файлы .htaccess были проанализированы (AllowOverride
должен быть установлен на всех в httpd.conf
).
В зависимости от вашей инфраструктуры, может быть какой-то прокси, который отбрасывает заголовок аутентификации. Для чистой среды тестирования я рекомендую локальную установку Apache2. Стеки, как XAMPP обеспечить полное развитие областей из коробки.
Других решений пока нет …