我很难搞清楚这一点。我在Laravel 5 API上使用JWTAuth并且我在读取令牌时遇到问题。这就是我所知道并尝试过的:
我已将我的CORS配置设置为允许我的API路径的所有标头:
return array(
'defaults' => array(
'supportsCredentials' => false,
'allowedOrigins' => array(),
'allowedHeaders' => array(),
'allowedMethods' => array(),
'exposedHeaders' => array(),
'maxAge' => 0,
'hosts' => array(),
),
'paths' => array(
'api/*' => array(
'allowedOrigins' => array('*'),
'allowedHeaders' => array('*'),
'allowedMethods' => array('*'),
'maxAge' => 3600,
),
'*' => array(
'allowedOrigins' => array('*'),
'allowedHeaders' => array('Content-Type'),
'allowedMethods' => array('POST', 'PUT', 'GET', 'DELETE'),
'maxAge' => 3600,
'hosts' => array('api.*'),
),
),
);
我已将以下内容添加到apache的网站启用的配置文件中:
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
我可以在Chrome工具中看到正在使用正确的令牌以正确的格式传回标头:授权:Bearer tokenstring
任何人都可以看到我可能做错了吗?有谁知道这个问题?
答案 0 :(得分:2)
我知道我的问题在哪里。根据{{3}}上的文档:
Apache用户注意
如果Apache不是base64,Apache似乎会丢弃Authorization标头 编码用户/传递组合。所以要解决此问题,您可以添加以下内容 你的apache配置
var groupedModel = Model.Select((e, i) => new { Element = e, Index = i })
.GroupBy(e => (e.Index - 1) / 6)
.Select(g => g.Select(e => e.Element));
我认为apache配置意味着000-default.conf文件。我错了。实际上,这应该是在.htaccess文件中完成的。一旦完成...... POOF ,一切正常!
答案 1 :(得分:0)
在我的 AWS
服务器 EC2
中,我必须编辑我的 /etc/apache2/apache2.conf
文件并在最底部粘贴:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
然后在我的 .htaccess
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
这按预期工作。