HTTP_AUTHORIZATION
似乎是服务器端环境变量,但它可以是什么值?有例子吗?它是由一些HTTP标头设置的吗?
此外,当它询问用户名和密码时,它在浏览器端看起来如何(它是一个HTML表单还是一个弹出框,要求输入用户名和密码(这是模态的,所以如果没有点击OK或取消,然后浏览器无法点击))。
通常,用户登录表单会使用POST变量(例如
)POST到服务器username=peter&password=123
那么这个HTTP_AUTHORIZATION
是什么意思?
答案 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:
标头;通常的流程是:
WWW-Authenticate:
标题包含方案和(有时)挑战Authorization:
标头重新发送请求质询和响应的确切格式因使用的身份验证方案而异; 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}]