通过 Cloudfront 获取请求期间的 AWS s3 SignatureDoesNotMatch 错误

Ank*_*kit 5 amazon-s3 amazon-cloudfront

我有两个 cloudfront 和一个 s3 存储桶,并且在两个 cloudfront 中我都添加了 s3 存储桶作为源。(我使用原始访问身份来提供 s3 内容)我在两个 cloudfront 中添加了相同的行为。我的问题是我只能使用一个 cloudfront 访问 get s3,并且它的抛出错误SignatureDoesNotMatch与其他 cloudfront。例如: https://cloudront1url/images/a.jpg有效但 https://cloudfront2url/images/a.jpg无效。

我得到的错误是点击这里

Ank*_*kit 14

我得到了这个问题。在行为中,我将“基于选定请求标头的缓存”(白名单选项)用于 s3 源。我是白名单“主机”标题。当我在“基于选定请求标头的缓存”中选择选项“无”时,问题得到解决。


Tow*_*iff 13

就我而言,它是 Cloudfront 中设置的原始请求策略,forward all headers结果是获取您的请求标头并计算签名,而 s3 从特定标头集计算签名。

使用 OAI 的正确方法是使用CORS-S3Origin请求策略或自行挑选选定的标头。


Big*_*kin 7

我从这篇文章中得到了提示。我必须编辑行为,使用 \xe2\x80\x9cLegacy 缓存设置\xe2\x80\x9d 并选择 \xe2\x80\x9cAll\xe2\x80\x9d for \xe2\x80\x9cQuery strings\xe2\x80\x9d (为\xe2\x80\x9cHeaders\xe2\x80\x9d选择默认\xe2\x80\x9cNone\xe2\x80\x9d,为\xe2\x80\选择默认\xe2\x80\x9cNone\xe2\x80\x9d x9cCookies\xe2\x80\x9d)。之后,SignatureDoesNotMatch错误就消失了。

\n

以下是 CloudFront 行为的屏幕截图。\nCloudFront 行为编辑

\n