【发布时间】: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