关于HTTP_AUTHORIZATION获取不到的问题

Posted by Chen Blog on September 15, 2018

在做接口的时候。由于特发性情况,换了一台服务器。但是这台服务器用的是Apache配置的网站。原来我们的网站是放在Nginx上面的。然后就遇到了这个错误。

发现错误

做接口认证的时候。我们把Authorization放在header里面的。直接在php端使用$_SERVER['HTTP_AUTHORIZATION']变量就可以获取到Authorization的值。

但是不知道为什么突然获取不到了。我排查了很久。我将Authorization改成Authorization1都可以获取到。但是为什么就是Authorization获取不到嘞?这很奇怪。

错误原因

这个错误是因为我们采用了Apache的服务所导致的。在Nginx下面是没有问题的。它可以帮我们解析到$_SERVER变量里面去。但是Apache就不会了。

我们需要这样修改 如果开启了rewrite_module模块。

1
2
3
#Authorization Headers
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

如果没有开启rewrite_module模块

1
2
3
4
5
Options +FollowSymlinks -Multiviews
RewriteEngine On
#Authorization Headers
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

参考文章