【问题标题】:Amazon S3 Signature does not match when extra query params "_ga" added in url在 url 中添加额外查询参数“_ga”时,Amazon S3 签名不匹配
【发布时间】:2019-04-05 12:03:56
【问题描述】:

尝试使用 s3 预签名 url 下载文件。我们与谷歌分析集成,因为所有超链接都附加了一个额外的查询参数“_ga”。

预签名的 url 构造类似于 https://someapprouter.herokuapp.com/ant/storage/1619958100/f8c40a75/file?response-content-disposition=attachment%3B%20fileName%3D%22PersonSampleFormat.csv%22&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20190403T191315Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=ACKJOEK2Q%2F20190403%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=xxxx

但是当我们尝试从浏览器下载文件时,会添加额外的查询参数,这会导致下载错误。 Finla URL 就像https://someapprouter.herokuapp.com/ant/storage/1619958100/f8c40a75/file?response-content-disposition=attachment%3B%20fileName%3D%22PersonSampleFormat.csv%22&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20190403T191315Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=AKJOEK2Q%2F20190403%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=xxxx&_ga=yyyyy

例外:

错误> SignatureDoesNotMatch 我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。

当 s3 进行签名匹配时,我们如何排除查询参数 _ga。

【问题讨论】:

  • 我不认为你可以。考虑不要将_ga 添加到这些链接中。
  • 看来我们无法排除。现在我在重定向到目标之前从预签名的 url 中删除 _ga 参数。

标签: amazon-web-services amazon-s3 google-analytics


【解决方案1】:

发生这种情况是因为您为 GA 实施启用了自动链接器。要删除它,您需要禁用自动链接器。

请注意,如果您要进行跨域跟踪,则需要将自动链接器自定义到特定域,以便链接器知道只自动链接这些域。

如果您提供有关 GA 如何实现的更多详细信息或提供链接,我可以向您展示具体代码。

【讨论】:

  • 是的,自动链接器已为 GA 实现启用,不幸的是我无法禁用它。但正如你提到的,我会尝试为我的用例定制它。感谢您的回复。
  • 您可以将链接器配置为仅附加 _ga 参数以链接到某些域。在这种情况下,它将是您的跨域,因此它将忽略文件服务器链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 2014-09-01
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
  • 2018-12-27
  • 2020-12-23
相关资源
最近更新 更多