问题描述
通过服务端签名后直传最佳实践进行OSS Web端PostObject直传时,出现以下报错。
<Error>
<Code>InvalidAccessKeyId</Code>
<Message>The OSS Access Key Id you provided does not exist in our records.</Message>
<RequestId>60AE1FFE8CFD483135961F65</RequestId>
<HostId> BucketName.oss-cn-beijing.aliyuncs.com</HostId>
<OSSAccessKeyId>STS.XXXXXXXB32vtXXXXXXXXXX</OSSAccessKeyId>
</Error>
排查过程
- 由于使用的是PostObject表单上传,因此需要您在浏览器打开开发者工具并复现问题,然后单击Network,查看表单Form Data数据。
- 通过表单里的OSSAccessKeyId值可以看到没有传SecurityToken,只有一个STS的AccessKeyId。而一个STS是由AccessKeyId、AccessKeySecret和SecurityToken组成的,因此可以确定是没有传SecurityToken导致出现报错。
问题原因
通常使用STS提示“The OSS Access Key Id you provided does not exist in our records”报错都是由于没有传SecurityToken导致。
解决方案
使用PostObject表单上传的时候,如果使用STS的方式,则需要在表单中增加x-oss-security-token字段,x-oss-security-token字段的值就是STS的SecurityToken,具体信息请参见PostObject接口文档。
相关文档
适用于
- 对象存储OSS
文档内容是否对您有帮助?