如何解决亚马逊SP-API中uploadFeed接口返回的「headers were not signed」错误?
如何解决亚马逊SP-API中uploadFeed接口返回的「headers were not signed」错误?
嘿,我太懂你踩的这个坑了!你现在的问题其实是把SP-API接口调用和S3预签名上传的逻辑搞混啦。
先给你捋清楚根源:你调用createFeedDocument拿到的那个上传URL,本质是亚马逊S3的预签名URL——这个URL本身已经包含了完成这次上传所需的所有签名授权信息,和你之前调用SP-API接口(比如createFeedDocument本身)的规则完全不一样。
之前你在SP-API接口里加x-amz-access-token能正常工作,是因为这些接口属于SP-API的范畴,需要这个令牌来验证你的身份权限。但到了上传Feed这一步,你是直接和S3交互,预签名URL已经替你搞定了授权,这时候你再把x-amz-access-token加到请求头里,S3会认为这个头是额外的、没有被包含在预签名的签名范围内,自然就会抛出「HeadersNotSigned」的错误。
给你具体的解决步骤:
- 当你拿到
createFeedDocument返回的上传URL后,发起上传请求时务必移除请求头里的x-amz-access-token - 同时要确保上传请求的
Content-Type和你调用createFeedDocument时指定的一致,不然也可能触发其他报错 - 额外提醒:后续调用
createFeed接口提交Feed的时候,还是需要正常携带x-amz-access-token的,只有S3上传这一步要去掉它
这样调整之后,应该就能顺利完成Feed上传啦。
备注:内容来源于stack exchange,提问作者Naitchi
相关产品推荐
相关产品推荐

