前两天在用 Yii2 RESTFul 接口时候发现的坑,无法正常使用 HttpBasicAuth
跟 HttpBearerAuth
。
开始以为是 框架为题最后一步步排除,发现是环境问题,问题就出在 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_include
和 mod_ext_filter
。不使用 ap_add_common_vars()
的第三方模块也可以选择尊重设置。