【问题标题】:What is the HTTP_AUTHORIZATION environment variable?什么是 HTTP_AUTHORIZATION 环境变量?
【发布时间】:2021-03-20 08:40:09
【问题描述】:

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

另外,当它询问用户名和密码时,它在浏览器端的外观如何(它是 HTML 表单还是询问用户名和密码的弹出框(这是模态的,所以如果不点击 OK 或取消,则浏览器无法点击))。

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

username=peter&password=123

那么HTTP_AUTHORIZATION 是关于什么的?

【问题讨论】:

    标签: http-headers webserver environment-variables


    【解决方案1】:

    我们在同一个页面上,典型的 POST 请求如下所示:

    POST /some/page HTTP/1.1

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

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

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

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

    质询和响应的确切格式因使用的身份验证方案而异; RFC2617(gpcz 链接到)涵盖“基本”(最常见,发送 base64 编码的“用户名:密码”)和“摘要”(包含加密哈希),NTLM 是在某些 Windows 环境中看到的另一个。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢...幸运的是,它不是一个 200 页的文档...这个用户名和密码请求以什么方式呈现给用户(在浏览器上)?
      • 我不是 100% 确定,但我猜这是老式 .htaccess 式身份验证的完成方式,其中会弹出一个对话框,提示用户名/密码。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-18
        • 2011-05-24
        • 1970-01-01
        • 1970-01-01
        • 2011-01-01
        相关资源
        最近更新 更多