PHP 授权:持有者标头不断更改名称


PHP Authorization: Bearer header keeps changing names

我在 PHP/Phalcon 中实现了 JWT 令牌,您需要在授权标头中发送 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>

我正在检查标题是否使用 Phalcon 的 hasServer 函数设置了标题

if($request->hasServer('HTTP_AUTHORIZATION')){
   $jwt = $request->getServer('HTTP_AUTHORIZATION')
.....
}