You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下Laravel Sanctum+Oracle11g Bearer Token返回401问题排查

排查Laravel Sanctum生产环境401 Unauthorized问题

1. 前端请求头验证

  • 确认请求是否携带正确的Authorization: Bearer {token}头,注意Bearer后必须有空格,token值需与登录接口返回的一致
  • 检查是否包含X-Requested-With: XMLHttpRequest头,Sanctum依赖该头识别合法API请求
  • 验证Angular拦截器是否正确将token注入所有受保护接口的请求头中,可通过浏览器开发者工具的Network面板查看请求头详情

2. Sanctum核心配置检查

  • 核对.env中的SANCTUM_STATEFUL_DOMAINS,需设置为前端域名(如frontend.yourdomain.com),多域名用逗号分隔,确保包含前端的完整域名(含端口,若有)
  • 检查SESSION_DOMAIN配置,需与前端域名匹配,主域名场景可设为.yourdomain.com(注意前缀的点),避免session cookie无法跨域传递
  • 确认config/sanctum.php中的stateful项是否正确读取SANCTUM_STATEFUL_DOMAINS的值,未硬编码错误域名

3. Docker内Apache配置排查

  • 检查Dockerfile是否启用了mod_rewrite模块,需添加命令:RUN a2enmod rewrite,Laravel路由依赖该模块
  • 确认Apache虚拟主机配置中,Laravel项目根目录的<Directory>块设置了AllowOverride All,否则.htaccess中的路由规则无法生效,导致Sanctum路由处理异常
  • 若服务器存在反向代理(如Nginx转发到Docker Apache),需确保代理配置传递了X-Forwarded-Proto和X-Forwarded-For头,Laravel需要通过这些头识别真实请求协议(HTTP/HTTPS),否则session和Sanctum cookie会因协议不匹配失效

4. PHP环境差异验证

  • 检查Docker内PHP是否安装了Sanctum必需的扩展:mbstring、openssl、json,可通过php -m命令查看
  • 查看Laravel日志(storage/logs/laravel.log),确认用户查询、token验证过程中是否有Oracle数据库相关错误(oci8版本差异可能导致SQL语法兼容问题)
  • 检查PHP的session.cookie_secure配置,生产环境若使用HTTPS,需将其设为On,确保session cookie仅通过安全连接传递

5. 日志定位具体原因

  • 查看Laravel错误日志,找到401请求对应的日志条目,明确是token无效、请求头未识别还是session异常导致的认证失败
  • 查看Apache访问日志(通常在/var/log/apache2/access.log)和错误日志(/var/log/apache2/error.log),确认请求是否正确到达Laravel,有无重定向、404等前置异常

内容的提问来源于stack exchange,提问作者Pablo Diaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 11:43:00