Встроенные 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-адрес, использует заголовок авторизации, иного способа работы базовой аутентификации не существует.

Другие вопросы по тегам