生产环境部署Laravel+Polaris Shopify应用遇Authorization头缺失500错误
针对你部署Laravel+Polaris React Shopify应用时出现的API 500错误(日志提示Missing Authorization key in headers array),结合本地正常、生产环境异常的情况,按以下步骤排查:
检查服务器是否拦截了Authorization请求头
本地正常但生产环境丢失该头,大概率是web服务器配置过滤了Authorization。- 若用Apache,检查两个
.htaccess文件,添加规则确保头信息被传递:RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] - 若用Nginx反向代理,需在配置中明确传递该头:
proxy_set_header Authorization $http_authorization;
- 若用Apache,检查两个
确认CSRF禁用配置正确
确保是在app/Http/Middleware/VerifyCsrfToken.php的$except数组中添加了API路由,而非直接注释中间件:protected $except = [ 'api/*', // 你的Shopify相关API路由 ];验证生产环境.env配置
核对.env中SHOPIFY_API_KEY、SHOPIFY_API_SECRET、SHOPIFY_APP_URL等配置与本地完全一致,无拼写错误;确认APP_ENV=production、APP_DEBUG=false配置正确。检查React构建后的请求逻辑
确认生产构建后的前端代码中,API请求是否正确携带了Authorization头(通常为Bearer {token}格式);排查环境变量是否在build时正确替换,避免因变量缺失导致请求头未设置。排查Laravel端请求头获取逻辑
在API控制器或中间件中临时添加日志,打印所有请求头:Log::info('Request Headers:', request()->headers->all());查看日志是否存在Authorization字段,判断是头未传递还是Laravel未读取到。
检查服务器权限与目录结构
确保web目录及Laravel的storage、bootstrap/cache目录有正确的读写权限;确认部署的目录结构正确,若React build文件放在Laravel的public目录,需保证.htaccess规则指向正确的入口文件index.php。
内容的提问来源于stack exchange,提问作者Moshiur Rahman

