Похоже, есть некоторые разногласия по поводу того, отбросили ли браузеры функцию и / или не рекомендуется ли эта функция.Но если ваш браузер фактически не отбросил эту функцию, то, как отмечено в answer выше @ nimrodm, вы можете указать URL с базовой аутентификацией как
http://user:password@domain.com/
Однако вам не следуетиспользовать протокол HTTP, так как это отправит учетные данные в виде открытого текста.Вместо этого просто используйте:
https://user:password@domain.com/
Обратите внимание, что вы должны urlencode специальных символов в полях пользователя или пароля (я часто использую «@» в моих паролях, поэтому они должны быть записаны как «% 40»).
Браузер извлекает учетные данные и передает их на сервер в заголовке авторизации:
Authorization: Basic credentials
, где учетными данными является просто (url-декодированная) строка «username: password» какзаписано в URL, но закодировано в base64.Но так как соединение https зашифровано, заголовок зашифрован, и учетные данные не отображаются вне браузера.
Я думаю, что вся проблема с удалением поддержки или отменой функции была основана на последствиях безопасности для указания учетных данныхиспользуя протокол http.Но с доступностью бесплатных ssl-сертификатов и стремлением к «ssl везде» в наши дни это больше не кажется большой проблемой.
Конечно, существует также проблема того, сколько хороших сертификатов будет проходить таким образом.делает тебяМногие или большинство приложений, которым требуется вход в систему, ожидают получения учетных данных из формы, которую пользователь заполняет и отправляет с запросом POST.Приложение должно быть написано для проверки каждого запроса на наличие заголовка Authorization
и, если оно есть, обрабатывать учетные данные так же, как если бы они были указаны в POST заполненной формы для входа.
Приложения, которые ожидают базовую HTTP-аутентификацию, обычно создаются с учетом этого требования, встроенного в конфигурацию сервера, например, с использованием директив Apache по этим строкам:
<Directory "/htdocs/protected">
AuthName "Registered User"
AuthType Basic
AuthUserFile /lib/protected.users
require valid-user
</Directory>
Где файл /lib/protected.users
является файлом зашифрованных имен пользователей ипароли, сгенерированные утилитой Apache htpasswd
.При такой конфигурации любой запрос ресурсов ниже /htdocs/protected
автоматически проверяется Apache на наличие заголовка Authentication
.Если запрос не имеет такого заголовка или учетные данные, указанные в заголовке, не соответствуют одной из пар имен пользователей и паролей в /lib/protected.users
, то сервер отвечает статусом 401 Unauthorized
и заголовком:
WWW-Authenticate Basic realm="Registered User"
Обратите внимание, что значение области «Зарегистрированный пользователь» является значением AuthName из конфигурации Apache.Браузер обрабатывает этот ответ, отображая подсказку, запрашивающую имя пользователя и пароль, со значением области, содержащейся в подсказке, чтобы дать пользователю подсказку о том, какое конкретное имя пользователя и пароль требуется.
Браузеры должны обработатьучетные данные специально для преобразования их в заголовок Authorization
, поэтому они также кэшируют их и отправляют каждый раз с запросами к одной и той же конечной точке, например, отправкой файлов cookie.Если они этого не сделали, пользователь должен будет указывать их в каждом последующем URL-адресе, указав эту конечную точку, чтобы избежать получения запроса.
Надеюсь, это поможет.