AWS s3 和 minio 不兼容签名检查 url 参数是否包含;

AWS s3 and minio incompatibility signature checking if url params contains ;

我遇到 minio(RELEASE.2019-07-17T22-54-12Z)AWS S3

之间不兼容的问题
  1. 我请求为从 minio
  2. 下载文件生成预签名 URL
  3. 来自 minio 我得到了包含部分 response-content-disposition=attachment%3Bfilename%3D%22test.zip%22
  4. 的预签名 URL
  5. 然后Google-HTTP-Java-Client/1.25.0请求获取这个文件
  6. minio return 以下错误:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
    <Code>SignatureDoesNotMatch</Code>
    <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.
    </Message>
    ...
</Error>
  1. 我发现签名是错误的,因为 Google-HTTP-Java-Client/1.25.0 在发送请求之前将 %3B 编码为 ;,更改了签名

我的问题是为什么AWS S3可以毫无问题地处理这个案例?

My question is why AWS S3 can handle this case without problems?

AWS S3 在涉及此类问题时是宽容的,因此即使请求存在问题,它也会接受请求。

检查是否使用相同的预签名-url 与带有 MinIO 的 curl 命令一起工作(因为 curl 不会修改 url.

这是 minio 中的错误。我已经在这里报告了:https://github.com/minio/minio/issues/8897 我可以确认 minio(RELEASE.2020-01-16T22-40-29Z) 的最后一个版本也受到影响。