获取对象的预签名URL(由我的golang服务器端代码生成)以403(SignatureDoesNotMatch)失败,但是我从minio浏览器(https:domain.com:9000 /)获得的预签名URL可以按预期工作(可以从服务器下载图像)
此问题存在于我的登台服务器中,其中有多个服务由docker-compose运行:前端,restful api,mysql和minio,它们在隔离的容器中运行。
以下是minio服务的docker-compose配置:
minio:
container_name: minio
image: minio/minio:RELEASE.2019-06-11T00-44-33Z
volumes:
- "./.minio/data:/data"
# - "./.minio/conf/minio.cnf:/root/.minio"
ports:
- "9000:9000"
restart: always
environment:
MINIO_ACCESS_KEY: W2SPAEGFUKISFTZ53EW2
MINIO_SECRET_KEY: +uzhExt04MPooPa+j+PBijzC7HOdrpJHFaQK7PSG
TZ: Asia/Shanghai
command: server /data
当我在浏览器中访问预签名的url(由我的golang代码生成)时,出现以下错误消息,但是,如果我使用从minio浏览器获得的预签名的url,它将起作用(我可以下载在minio中上传的图像服务器)
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
<Key>1NVUCVJPLyS2okhlqtENB47bmFy.JPG</Key>
<BucketName>picture</BucketName>
<Resource>/picture/1NVUCVJPLyS2okhlqtENB47bmFy.JPG</Resource>
<RequestId>15ADED649D847B74</RequestId>
<HostId>4b5e8cee-8cc3-466c-8fda-441ac2ca0d79</HostId>
</Error>