我在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>
答案 0 :(得分:0)
我正在检查是否使用Phalcon的hasServer函数
设置了标头if($request->hasServer('HTTP_AUTHORIZATION')){
$jwt = $request->getServer('HTTP_AUTHORIZATION')
.....
}