【问题标题】:enable Apache http Authorization header启用 Apache http 授权标头
【发布时间】:2016-09-06 14:57:29
【问题描述】:

我写了一个APIPHP ZF2 他们使用HTTP 授权。我使用apache_request_headers() 获取所有HTTP 标头(也使用ZF2 的$this->getRequest()->getHeaders()) 进行了测试。

它适用于我的语言环境安装版本。但是在我的服务器上,HTTP 授权标头不可用。我的浏览器调试工具显示授权标头正确发送。

两台服务器运行相同的软件:Ubuntu 14.04Apache2(服务器版本:Apache/2.4.7 (Ubuntu))。

启用apache2 模块(auth_basic 已启用):

是否有PHP ini 设置允许授权标头?

编辑 2015-05-13:

$headers = apache_request_headers();
if (isset($headers['Authorization'])) {
    echo 'you are auth';
} else {
    echo 'there is no Authorization';
}

在我的语言环境系统上,这将返回“您是身份验证”,在服务器上返回“没有授权”。在 Chrome 浏览器中使用 Postman 应用测试。

编辑 2015-05-14: 我认为这是一个 Apache2 主题。

如何在 Apache2 中启用 Authorization 标头?

【问题讨论】:

    标签: php apache http-headers authorization


    【解决方案1】:
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
    

    在.htaccess中解决了这个问题。

    但我不知道为什么在我的语言环境系统上不需要这样做。

    【讨论】:

    • 工作正常,专业回答:)
    • 这只会产生一个空变量(好像 $1 是空字符串),即使我在 URL 中提供身份验证...
    【解决方案2】:

    按照 bitkorn 的建议,您可以将以下内容添加到您的 .htaccess 中:

    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
    

    如果这不能解决您的问题,那么您可以尝试以下方法:

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

    但是,必须提到的是,如果您使用任一解决方案,则必须使用 HTTP_AUTHORIZATION 标头访问您的标头。如果您尝试使用 Authorization,它将为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-08
      • 2017-03-22
      • 2021-06-23
      • 2014-12-20
      • 2019-09-19
      • 2015-05-30
      • 2016-04-24
      相关资源
      最近更新 更多