it-swarm.com.ru

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

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

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

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

username=peter&password=123

так о чем этот HTTP_AUTHORIZATION?

13
太極者無極而生

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

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

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

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

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

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

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

27
SimonJ

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

3
gpcz

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

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
0
Nigel Peck