Apache Authorization 头信息为空的解决方法

前两天在用 Yii2 RESTFul 接口时候发现的坑,无法正常使用 HttpBasicAuthHttpBearerAuth

开始以为是 框架为题最后一步步排除,发现是环境问题,问题就出在 Apache

知道问题出在哪儿就好办了,直接上 Google 百度 最终找到解决问题的方法, 在 Apache 配置添加

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

此次问题完美解决。

参考链接 https://stackoverflow.com/a/17490827/435956

以上 是 2017年8月 的博客文章

参考链接也有另外的解决方法,添加配置

CGIPassAuth on

Apache 官方对 CGIPassAuth 的解释是

CGIPassAuth 允许脚本访问HTTP授权头,如 authorization ,这是实现 HTTP 基本身份验证的脚本所必需的。通常这些 HTTP 头对脚本是隐藏的。这是为了禁止脚本在web服务器中启用HTTP基本身份验证时看到用于访问服务器的用户ID和密码。当允许脚本实现HTTP基本身份验证时,应使用此指令。

可以使用此指令来代替编译时设置的 SECURITY_HOLE_PASS_AUTHORIZATION,该授权在 Apache HTTP Server 的早期版本中可用。

任何使用 ap_add_common_vars() 的模块都会考虑此设置,例如 mod_cgi, mod_cgid, mod_proxy_fcgi, mod_proxy_scgi, 等等。值得注意的是,它会影响不按通常意义处理请求但仍使用此API的模块;这方面的示例有 mod_includemod_ext_filter 。不使用 ap_add_common_vars() 的第三方模块也可以选择尊重设置。

Post Author: admin