IE, Firefox, Chrome: 401 Authorization Required

archive view archive save

Authorization Ошибка базовой авторизации (Basic HTTP Authentication failure) в браузерах Chrome, Firefox и Internet Explorer. При попытке пройти авторизацию в директории сайта, которая защищена базовой авторизацией получаем HTTP ошибку 401 или просто пустой экран.

Снифер был не многословен и на тему "401 Authorization Required" выразился образно:

The request returned a HTTP status code failure or caused an internal browser error. Failing requests may prevent a web page functioning correctly and cause performance problems

Ошибка базовой авторизации замечена на различных серверах, вплоть до IIS. Гугление говорит о том, что это может быть некая встроенная защита браузера, которая типа отключается параметром запуска из командной строки "--allow-cross-origin-auth-prompt", но мне она не помогла, но в браузере Opera базовая авторизация работала успешно.

Следующим шагом был взор в сторону конфигурации и анализа лог.файлов сервера, в которых также ничего подозрительного не найдено. Ещё немного покопавшись наткнулся на тему "Issue 91814 - chromium - Iframe Basic Authentication Issue - An open-source project to help move the web forward. - Google Project Hosting", в которой была упомянута директива Satisfy, применяемая в веб-сервере Apache для определения способа директив доступа (ака Allow/Deny) с директивами базовой авторизации (AuthType, require, etc). Директива Satisfy может принимать такие значения:

  • Satisfy Any - Пропустит запрос, если выполнено хотя бы одно из требований, логин и пароль при базовой авторизации (ака "require valid-user") или совпадение IP адреса с адресом или диапазоном из директивы "Allow from ...";
  • Satisfy All - Пропустит запрос, при условии если оба требования будут успешно выполнены, и базовая идентификация и проверка доступа по IP.

Решил попробовать добавить в конец файла .htaccess директиву "Satisfy all":

AuthUserFile "/path/to/.htpasswd"
AuthName "Administrator only"
AuthType Basic
require valid-user
Order allow,deny
Satisfy all

HTTP ошибка 401 исчезла и базовая авторизация в браузерах IE, Firefox и Chrome заработала как обычно, но что интересно, так это то, что согласно документации "Satisfy all" установлена по умолчанию, а даже если бы было и "Satisfy any", то одинаково бы должно было бы работать?!

На каком-то форуме грешили на "редиректы" и использование фреймов, но фреймов на сайте нет, а вот "редиректы" были возможны... - например, "редирект" со стороны скрипта или Nginx-а на фронтенде, кстати, в лог. файле изменений последнего, регулярно проскакивают патчи "багов" с редиректами...

Просто так окончательно не определить, кто именно виноват в "Basic HTTP Authentication failure" - браузеры (IE, Firefox и Chrome), ведь в опере всё работает, Nginx на фронтенде или apache на бакэнде. Тут нужно жечь костры, курить травы и плясать с бубном;))

Ссылки по теме Basic HTTP Authentication

Так или иначе, в моём случае, проблема решена, что касается аналогичной проблемы с базовой авторизацией на других серверах типа IIS, то предлагаю побродить по тематическим ссылкам, что перечислены ниже.


Об авторе
АдМинь БагоИскатель
АдМинь БагоИскатель ярый борец за безглючную работу любых механизмов и организмов во всей вселенной и потому пребывает в вечном поиске всяческих багов, а тот кто ищет как известно всегда находит. Когда что-то или кого-то вылечить не в состоянии, то со словами "Я в аду, а вы все черти" уходит в запой выйдя из которого снова берётся лечить неизлечимое.
Ещё статьи автора
Комментарии в блоге
Новое на форуме