启用Apache http授权标头

时间:2016-05-11 09:41:23

标签: php apache http-headers authorization

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

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

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

已启用apache2个模块(auth_basic已启用): enabled Apache2 modules

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

编辑2015-05-13:

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

在我的语言环境系统上,这会在服务器上返回“你是auth”,“没有授权”。在Chrome浏览器中使用Postman应用进行测试。

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

如何在Apache2中启用Authorization标头?

2 个答案:

答案 0 :(得分:9)

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
.htaccess中的

解决了这个问题。

但我不知道为什么在我的语言环境系统中没有必要这样做。

答案 1 :(得分:1)

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

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

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

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

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