Встроенные URL-адреса
Википедия говорит, что аутентификация HTTP Basic основана на Authorization
заголовок для предоставления учетных данных от клиента к серверу.
Но также возможно встроить учетные данные в URL:
http(s)://<user>:<password>@<host>/<path>
Это то, что интерпретируется браузером и превращается в Authorization
заголовок или он напрямую отправляется на сервер?
2 ответа
Но также возможно встраивать учетные данные в URL
Только если браузер глючит в поддержке HTTP, часто намеренно, чтобы быть обратно совместимым с браузерами, где люди ошибочно считали, что это хорошая идея.
Это никогда не было разрешено схемой HTTP, хотя синтаксис URI в более общем смысле допускает информацию о пользователях там.
Это что-то, что интерпретируется браузером и преобразуется в заголовок авторизации.
Да. Если сервер отправит 401, браузер ответит, используя это имя пользователя и пароль. Был по крайней мере один, который использовал упреждающую попытку Basic, который был явно плохой идеей поверх существующей плохой идеи.
Пользовательский опыт, если вы вводите URL с учетными данными, зависит от браузера и настроек браузера.
Скажи, что ты просишь http://user:pass@example.com/index.html
,
Браузер запрашивает http://example.com/index.html
, игнорируя учетные данные для первого запроса. Сервер выдает ответ 401 о том, что требуется базовая аутентификация. Тогда в зависимости от браузера и конфигурации вы можете испытать
- незаполненное имя пользователя / пароль для ввода учетных данных, игнорируя пользователя / пароль
- подсказка пользователю, спрашивающему ли войти в
example.com
какuser
(Fire Fox) - автоматически войти с учетными данными.
Затем будет сделан второй запрос http://example.com/index.html
с Authorization
заголовок.
Любой другой клиент, который входит в систему автоматически, когда ему присваивается такой URL-адрес, использует заголовок авторизации, иного способа работы базовой аутентификации не существует.