什么是HTTP_AUTHORIZATION环境变量?

时间:2011-02-24 20:55:37

标签: http-headers webserver environment-variables

HTTP_AUTHORIZATION似乎是服务器端环境变量,但它可以是什么值?有例子吗?它是由一些HTTP标头设置的吗?

此外,当它询问用户名和密码时,它在浏览器端看起来如何(它是一个HTML表单还是一个弹出框,要求输入用户名和密码(这是模态的,所以如果没有点击OK或取消,然后浏览器无法点击))。

通常,用户登录表单会使用POST变量(例如

)POST到服务器
username=peter&password=123

那么这个HTTP_AUTHORIZATION是什么意思?

3 个答案:

答案 0 :(得分:28)

就这样我们在同一页面上,典型的POST请求看起来像这样:

POST /some/page HTTP/1.1                            <-- request line
Host: www.example.com                               <-------------------\
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) <--| headers
Content-Length: 27                                  <-------------------/
... some other headers ...
                                                    <-- blank line
username=peter&password=123                         <-- POST data, if any

CGI scripts开始提供动态内容的主要方式开始,HTTP_开始的环境变量是一个宿醉,它们向服务器端代码表明客户端提供了特定的标头请求的一部分。来自CGI spec

  

名称以“HTTP_”开头的元变量包含从客户端请求标头字段读取的值(如果使用的协议是HTTP)。 HTTP标头字段名称将转换为大写,所有出现的“ - ”都替换为“”,并且前面有“HTTP ”来提供元变量名称。

许多HTTP身份验证机制中使用的Authorization:标头;通常的流程是:

  1. 浏览器尝试请求页面
  2. 服务器响应“401 Unauthorized”和WWW-Authenticate:标题包含方案和(有时)挑战
  3. 浏览器会提示用户输入凭据,然后使用包含对质询的响应的Authorization:标头重新发送请求
  4. 质询和响应的确切格式因使用的身份验证方案而异; RFC2617(gpcz链接到)涵盖“基本”(最常见,发送base64编码的“用户名:密码”)和“摘要”(包含加密哈希),NTLM是在某些Windows环境中看到的另一种

答案 1 :(得分:3)

HTTP授权标头的详细说明可在RFC2617中找到,位于http://www.ietf.org/rfc/rfc2617.txt,第3.2.2节。

答案 2 :(得分:0)

标准的Joomla也许值得注意! .htaccess文件中包含以下规则,可根据请求中的HTTP_AUTHORIZATION标头设置Authorization环境变量:

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