PHP授权:Bearer标头不断更改名称

时间:2016-03-02 05:45:19

标签: php http-headers phalcon

我在PHP / Phalcon中实现了JWT令牌,您需要在Authorization头中发送JWT令牌。我按如下方式发送标题:

$.ajax({
      url: URL,
      dataType: 'text',
      method: 'post',
      data: { "data": "values" },
      success: function(data) {
        return console.log("Returned data: ", data);
      },
      beforeSend: function(xhr, settings) {
        xhr.setRequestHeader('Authorization', 'Bearer ' + token); 
});

要阅读标题,请执行以下操作:

$auth_header = $request->getHeader ( 'Authorization' );

就是这样。我能够成功阅读标题并继续生活。

几天后,我的代码无法读取标题。 $ auth_header的值为空。经过一些诊断后,我发现标题需要阅读如下:

$auth_header = $request->getHeader ( 'REDIRECT_HTTP_AUTHORIZATION' );

我在代码中添加了两个参数,以便可以读取两个标头,具体取决于实际来自哪个。几天后,我又增加了第三个:

$auth_header = $request->getHeader ( 'AUTHORIZATION' );

这次这个词必须是全部资本,否则它就不会读任何东西。

那么现在呢?几天之内会有第四个名字吗?我该怎么办?我想指出在PHP 5.6上没有发生这种情况。它只发生在PHP 5.3的开发服务器上。这是一个已知的问题?根本原因是什么?

我的.htaccess文件是:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L]
    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
</IfModule>

1 个答案:

答案 0 :(得分:0)

我正在检查是否使用Phalcon的hasServer函数

设置了标头
if($request->hasServer('HTTP_AUTHORIZATION')){
   $jwt = $request->getServer('HTTP_AUTHORIZATION')
.....
}