做接口认证的时候,我们可能会用到自定义header头Authorization。
我们都知道php的自定义头信息都可以使用$SERVER['HTTP*']来获取,如header('test: wzhtest');获取的时候,我们可以使用$_SERVER['HTTP_TEST']来获取。
- 这里说明下。Authorization可能是个例外。nginx没问题,但是Apache下可能会出现一个问题。那就是我们使用$_SERVER['HTTP_AUTHORIZATION']可能就获取不到值。
Apache服务器下,我们需要开启rewrite_module模块,然后编辑.htaccess文件,在上面加入
#Authorization Headers
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
或
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
如果没有开启过rewrite_module模块,我们需要新建.htaccess 内容如下:
Options +FollowSymlinks -Multiviews
RewriteEngine On
#Authorization Headers
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
代码获取header参数中自定义key的值
//获取header参数中自定义key的值
// $no_token = Request::instance()->header('noToken');//方法一
// $no_token = isset($_SERVER['HTTP_NOTOKEN']) ? $_SERVER['HTTP_NOTOKEN'] : '未知';//方法二
// if ($no_token== 'true') {
// return ;
// }