如何在 AWS CloudFront 中配置查询参数

Ale*_*Dev 6 cloud web-applications amazon-s3 amazon-web-services amazon-cloudfront

我在包含我的前端应用程序 ( https://myapp.com )的 S3 存储桶之前有一个 AWS 云前端。当我https://myapp.com/experts?profession=carpenter浏览我网站的导航元素(在本例中为按钮)时,一切正常。但是,当我尝试通过从浏览器的导航栏中手动输入 url 来访问相同的 url 时,就会出现问题。查询参数消失,只有在导航栏中是没有查询参数的以下网址https://myapp.com.com/experts

我的问题是,我应该如何配置 AWS cloudfront 以允许我传递查询参数?

非常感谢!

Lah*_*ima 23

现在 AWS 有一种不同的方式来设置它,默认情况下会选择这种方式。S\xc3\xa9bastien 在他的答案中提到的方法被标记为“旧版缓存设置”

\n

在此输入图像描述

\n

  • 除了上述内容之外,我还必须在请求的资源中添加尾部斜杠。因此,我必须使用“.../newsletter/verify/?id=1234”,而不是“.../newsletter/verify?id=1234”。我相信这与 S3 如何解析资源路径有关,但我欢迎更具体的解释。 (3认同)
  • @ChauGiang 将源请求策略设置为“AllViewer”足以保留查询参数,但是如果您在不需要缓存的情况下提供动态内容,则将缓存策略设置为“缓存禁用”也很有意义。 (2认同)

Séb*_*acq 11

对于 Web 分配,您可以选择是否希望 CloudFront 将查询字符串转发到您的源,如果是,则根据所有参数或选定参数缓存您的内容。

默认情况下,Cloudfront 不转发查询字符串,以提高缓存命中率。

您可以按照下面的屏幕截图更改行为定义中的参数。

截屏

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/QueryStringParameters.html

  • 现在(12/2021)AWS 根据@lahiru-chandima 答案有一种*不同的*方式来管理此问题。 (2认同)