Access token 加了 Bearer 前缀导致 401
现象#
Postman 里调通的请求搬到代码后全部返回 401,响应体是 [API] Invalid API key or access token,换一个 token 依然一样。
原因#
- 把 Shopify token 当成 OAuth Bearer token,前面加了 Authorization 前缀
- 从 .env 读取时带了换行或首尾空格,请求头里出现不可见字符,服务端解析失败
- 头名拼成
X-Shopify-Access_token或 X-Shopify-Token,连字符与大小写不一致 - 反向代理只转发白名单头,自定义头在网关处被丢掉,应用侧读到空值
处理步骤#
- 抓一次原始请求,确认有且只有
X-Shopify-Access-Token,值不带 Bearer 前缀 - 读取配置后执行
trim(),并断言开头与长度,挡掉隐藏的换行 - 用
curl -H 'X-Shopify-Access-Token: $TOKEN' .../shop.json单独验证一次 - 检查 Nginx 的
underscores_in_headers与转发白名单,确保头没有被吞 - 使用官方 SDK 时改由
session.accessToken注入,不要自己拼字符串
验收标准#
本地与线上同一请求都返回 200,响应头 X-Shopify-API-Version 有值,日志中不再出现该 401。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。