Что такое переменная среды HTTP_AUTHORIZATION?

HTTP_AUTHORIZATION Кажется, это переменная среды на стороне сервера, но какие это могут быть значения? Есть ли примеры? Это установлено некоторыми заголовками HTTP?

Кроме того, как это выглядит на стороне браузера, когда он запрашивает имя пользователя и пароль (это HTML-форма или это всплывающее окно, которое запрашивает имя пользователя и пароль (который является модальным и поэтому, если не нажимать OK или Отмена, тогда в браузере нельзя нажать)).

Обычно форма входа пользователя отправляет POST на сервер с такими переменными POST, как

username=peter&password=123

и что это HTTP_AUTHORIZATION около?

3 ответа

Просто, чтобы мы были на одной странице, типичный запрос POST выглядит примерно так:

POST / some / page HTTP / 1.1 <- строка запроса
Хост: www.example.com <------------------- \
Пользователь-агент: Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_6_6; ru-ru) <- | заголовки
Длина контента: 27 <------------------- /... некоторые другие заголовки...
                                                    <- пустая строка
username = peter & password = 123 <- данные POST, если есть

Начало переменных среды HTTP_ Это пережиток тех дней, когда CGI-скрипты были основным способом обслуживания динамического контента, и они указывают вашему серверному коду, что клиент предоставил определенный заголовок как часть запроса. Из спецификации CGI:

Метапеременные с именами, начинающимися с "HTTP_", содержат значения, считанные из полей заголовка запроса клиента, если используется протокол HTTP. Имя поля заголовка HTTP преобразуется в верхний регистр, все вхождения "-" заменяются на " ", и перед ним добавляется "HTTP ", чтобы дать имя мета-переменной.

Authorization: заголовок, используемый в ряде механизмов аутентификации HTTP; обычный поток это:

  1. браузер пытается запросить страницу
  2. сервер отвечает "401 Unauthorized" и WWW-Authenticate: заголовок, содержащий схему и (иногда) вызов
  3. браузер запрашивает учетные данные пользователя, а затем повторно отправляет запрос с Authorization: заголовок, содержащий ответ на вызов

Точный формат запроса и ответа различается в зависимости от используемой схемы аутентификации; RFC2617 (с которым связан gpcz) охватывает "базовый" (наиболее распространенный, отправляет "username: password" в кодировке base64) и "дайджест" (содержит криптографический хеш), а NTLM - это еще одна разновидность, встречающаяся в некоторых средах Windows.

Подробное описание заголовка HTTP-авторизации можно найти в RFC2617, расположенном по адресу http://www.ietf.org/rfc/rfc2617.txt, раздел 3.2.2.

Также стоит отметить, что стандартная Joomla! .htaccess файл имеет следующее правило, чтобы установить HTTP_AUTHORIZATION переменная среды, основанная на Authorization Заголовок в запросе:

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Другие вопросы по тегам