Laravel 5 控制器中获取 Postman 传递的 bearer token 无返回如何解决
Laravel 5 无法获取Postman传递的Bearer Token解决步骤
- 首先校验Postman请求配置:确认你在Postman的Authorization标签中选择的是Bearer Token类型填写token,或是在Headers标签中手动添加
Authorization请求头,值的格式必须为Bearer 你的实际token,注意Bearer与token之间只能有1个半角空格,不能缺漏、多打空格,也不要拼写错误。 - 接着校验服务端请求头转发规则:
bearerToken()方法依赖Authorization请求头取值,大部分Web服务器默认不会将该头转发给PHP进程。- 若使用Nginx,需要在站点配置的对应location块中添加
fastcgi_pass_header Authorization;,修改后重启Nginx再测试。 - 若使用Apache,确认站点根目录的
.htaccess文件中存在SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1规则,Laravel官方自带的.htaccess已经包含该配置,若你修改过配置可以手动补上后重启Apache。
- 若使用Nginx,需要在站点配置的对应location块中添加
- 可以临时打印全量请求头确认是否接收到参数:在控制器中执行
dd($request->headers->all());,查看返回结果中是否存在authorization键,对应值是否符合格式要求。如果能拿到请求头但bearerToken()仍然返回空,可以手动截取token:
$token = trim(str_replace('Bearer ', '', $request->header('Authorization')));
- 最后检查路由中间件:若当前访问的路由绑定了自定义中间件,先临时移除中间件测试,避免中间件提前处理请求导致请求头丢失。
内容的提问来源于stack exchange,提问作者RPadox
相关产品推荐
相关产品推荐

