【问题标题】:PHP Authorization: Bearer header keeps changing namesPHP授权:不记名标头不断更改名称
【发布时间】:2016-06-14 20:16:08
【问题描述】:

我在 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 的值为空。经过一番诊断,发现需要读取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>

【问题讨论】:

    标签: php http-headers phalcon


    【解决方案1】:

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

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

    【讨论】:

    • 这也有效,至少现在是这样,但它仍然没有告诉我为什么会这样。
    • 我认为你可以 var_dump $_SERVER 并观察索引
    猜你喜欢
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多