什么是HTTP_AUTHORIZATION环境变量?

nop*_*ole 15 webserver environment-variables http-headers

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

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

通常,用户登录表单将使用POST变量POST到服务器,例如

username=peter&password=123
Run Code Online (Sandbox Code Playgroud)

那这是HTTP_AUTHORIZATION关于什么的?

Sim*_*onJ 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

环境变量的开头HTTP_CGI脚本是提供动态内容的主要方式的宿醉,它们向服务器端代码表明客户端提供了特定标头作为请求的一部分.从CGI规范:

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

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

  1. 浏览器尝试请求页面
  2. 服务器响应"401 Unauthorized"和WWW-Authenticate:包含方案的标题和(有时)挑战
  3. 浏览器提示用户输入凭据,然后使用Authorization:包含对质询的响应的标头重新发送请求

挑战和响应的确切格式根据使用的身份验证方案而有所不同; RFC2617(gpcz链接到)涵盖"基本"(最常见,发送base64编码的"用户名:密码")和"摘要"(包含加密哈希),而NTLM是在某些Windows环境中看到的另一种.


gpc*_*pcz 3

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