写在前面
我往常用Nginx
比较多,Apache
用的比较少,这不,把一个项目由原先的Nginx
服务当中放到Apache
里一跑
完蛋,原本用的好好的功能,全部提示我未登录,我还以为是登录鉴权接口报错了呢
结果一看,是php
端获取不到Authorization
了……
这玩意写法很通用啊,不都是从request
头,也就是header
里获取到的嘛
查了一下才知道,原来Apache
比较高级,还默认关闭了Authorization
这个值的输入,得手动开启才行。
开启方法
在你的虚拟主机配置或.htaccess
中添加以下指令:
# 允许Authorization头传递给PHP
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
相当简单,比如我的项目根目录下的这个.htaccess
文件原先是这个样子的。
location / {
if (!-f $request_filename){
rewrite ^(.*)$ /index.php?s=/$1 last;
}
}
补充这部分之后是这样的
location / {
if (!-f $request_filename){
rewrite ^(.*)$ /index.php?s=/$1 last;
}
# 允许Authorization头传递给PHP
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
}
就可以收到了。
Apache
和Nginx
在Authorization
属性值问题处理的差异
瑞思拜~