【问题标题】:AWS cloudFront signed cookie fails intermittently for the same server同一台服务器的 AWS cloudFront 签名 cookie 间歇性失败
【发布时间】:2025-11-27 09:45:01
【问题描述】:

我们使用 AWS 为我们的网站存储音频/视频内容。

我们使用预设策略使用签名 Cookie: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-setting-signed-cookie-canned-policy.html

所以我们为每个请求设置了 3 个 cookie 来检索数据:

CloudFront-Policy;
CloudFront-Signature; 
CloudFront-Key-Pair-Id; 

用于访问http://cloudfront.org_name.com/2016%2F7%2F1%2FStanding+Meditation_updated+91615.mp3之类的资源URL

所有三个 cookie 都由服务器(基于 Java)为每个请求重新设置为正确的预设值。

对于大部分内容,大部分时间它都可以正常工作,但对于某些资源,它只是失败并出现 403 Forbidden 错误。

如果我在单独的浏览器选项卡中打开两个内容(一个有效,一个无效),所有 cookie 和其余部分看起来完全相同,除了资源 URL。

然而 - 一个有效,而另一个无效。

更令人困惑的是,有时从同一台物理客户端机器请求相同的资源,一次在 FF 中,另一次在 Chrome 中,在一个浏览器中工作但在另一个浏览器中失败。

此外,有时清除用户浏览器 cookie 有效,有时则失败,没有明显的模式。

这让我发疯了,因为我很难弄清楚哪里出了问题。

谁能提供任何关于可能是什么原因以及可以尝试哪些补救措施的见解?

【问题讨论】:

  • 我们首先需要确定问题出在cookie、URL还是服务上。我不确定 URL 中的 + 不会在 CloudFront 中给您带来麻烦;有一次,我认为存在与此相关的错误。是否有一些从不有效的网址?是否有一些从不起作用的cookies?从失败中捕获 cookie 和 URI,您应该能够使用 curl 重放它们。
  • 谢谢迈克尔。使用 curl,我使用完全相同的 cookie 运行这 2 个 url: curl -v -b "3 cookie:value pairs go here" cloudfront.test.company_name.com/… - 不起作用; curl -v -b "3 cookie:value 对在这里"cloudfront.test.company_name.com/… - 有效

标签: java amazon-web-services cookies amazon-cloudfront


【解决方案1】:

好的,答案在我给迈克尔的回复中:

我后来注意到工作内容和失败内容的资源 URL 不同。非常接近第一眼就没有发现差异,但是不同。一切都是一样的——厨师、标题、其他参数。但我在比较 2 个不同的内容。第一个 URL 总是有效,第二个总是失败。

经验教训:仔细卷曲这两个资源并分析 uRLS,看看实际上有什么不同。

提示:使用 Chrome 的开发工具来派生 curl 命令: 右键单击失败的 URL -> 复制 -> 复制为 cURL。然后粘贴到命令行中进行测试。

顺便说一句,我们刚刚重新上传了失败的资源并更新了引用网页 - 一切都恢复正常了。

【讨论】:

    最近更新 更多