JWT 无法仅在实时站点上从请求中解析令牌

我已经使用 PHP(7.0 版)构建了一个自定义 API,特别是使用 tymon/jwt-auth(1.0.0-rc.2 版)包进行用户授权的 Laravel 框架(5.5.40 版)。我的许多控制器功能使用这一行来获取当前用户的凭据:


$user = JWTAuth::parseToken()->authenticate();

我使用 Postman 来测试我的 api。


当我在本地环境中进行 api 调用时,授权正常通过并返回预期数据。当我对我的实时站点 API(托管在我的 apache 服务器中)进行 api 调用时,我收到此错误:


无法从请求中解析令牌


由于这个错误只发生在我的实时 API 上,我推测我的 API 的 .htaccess 文件有问题(顺便说一下,应用程序可以正常识别,我做了一些调试并检查了我的 apache error_log 以确保对我的API 的 .htaccess 被识别)。我尝试添加这些行(以及这些行的不同变体,因为我在研究时遇到了多个建议):


RewriteEngine On

RewriteCond %{HTTP:Authorization} .+

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

但错误仍然存在。我尝试添加此代码:


var_dump($_SERVER);

在...之前:


$user = JWTAuth::parseToken()->authenticate();

我注意到在我的实时 API 中,$_SERVER 数组中缺少这些元素: REDIRECT_HTTP_AUTHORIZATION、HTTP_AUTHORIZATION


上面的 .htaccess 代码不是要手动添加这些吗?


这些是我在 Chrome DevTools 中看到的响应头:


访问控制允许来源: http:/example.gr


缓存控制:无缓存,私有


连接:关闭


内容编码: gzip


内容类型:应用程序/json


日期: 2019 年 5 月 14 日,星期二 11:33:10 GMT


服务器:阿帕奇


传输编码:分块


变化:起源,接受编码


X-RateLimit-Limit: 60


X-RateLimit-Remaining: 59


这些是我的请求标头(显示临时标头):


接受:应用程序/json,文本/纯文本,/


授权:承载eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9hcGkudjIucmVzY2FwZXIuaG9uZXN0cGFydG5lcnMuZ3JcL2FwaVwvYXV0aFwvbG9naW4iLCJpYXQiOjE1NTc4MzM1ODksImV4cCI6MTY0NDIzMzU4OSwibmJmIjoxNTU3ODMzNTg5LCJqdGkiOiJweDRjNDlOckFQbGMyM21OIiwic3ViIjo1LCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0.YWPhPDeNrB4TI1gdhBYylrmIAs1-R1-K2M2eKyO89KY


来源: http : //example.gr


参考: http://example/summary


用户代理: Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如 Gecko)Chrome/74.0.3729.131 Safari/537.36


慕村225694
浏览 171回答 2
2回答

幕布斯6054654

似乎 apache 正在删除授权标头。所以试试这个从RewriteCond %{HTTP:Authorization} .+RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]至RewriteCond %{HTTP:Authorization} .RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]正则表达式有点不同。此配置是从 symfony/apache-pack 的默认 .htaccess 直接复制/粘贴的,您可以在此处找到 symfony/apache-pack

慕容708150

问题终于解决了!这是一个权限问题。我将文件夹的所有内容都默认为 755,文件的所有内容都默认为 644,并且出现了 HTTP_AUTHORIZATION 标头。
打开App,查看更多内容
随时随地看视频慕课网APP