【问题标题】:AWS S3 images served only via HTTP, but Chrome upgrades to HTTPSAWS S3 图像仅通过 HTTP 提供,但 Chrome 升级到 HTTPS
【发布时间】:2021-02-16 08:28:55
【问题描述】:

我无法使 S3 图像托管通过 HTTPS 工作。我读到“Amazon S3 网站端点不支持 HTTPS。” - docs

我可以通过 HTTP 托管我的图像,但是,当我将以下标记放入 HTML 中时:

<img src="http://MY-BUCKET-NAME.s3-website.eu-central-1.amazonaws.com/images/51612809-741c-40c7-8c29-7b332be709d7.jpg">

Chrome 请求

https://MY-BUCKET-NAME.s3-website.eu-central-1.amazonaws.com/images/c1612a09-741c-40c6-8c29-7b332be709d7.jpg

(注意 http 变为 https),结果为 ERR_CONECTION_TIMED_OUT

如何让它发挥作用?

【问题讨论】:

  • 嵌入图片的网站是否通过https提供服务?对 chrome 进行了更改,阻止了混合内容 - chrome blog。如果你只使用 S3 进行图片托管等,你不需要使用静态网站托管,你也可以让图片公开可读并嵌入它们的 https-url。在这种情况下,我认为这是一个更好的解决方案。
  • @Maurice 是的,网站已通过 https。是的 - 我知道 chrome 会阻止混合内容。问题仍然存在 - 如何使其工作? p.s.感谢您对我的问题的良好编辑。
  • http 是否出于某种原因对您很重要,或者升级到 https 是一种选择?
  • 您需要在您的 S3 网站前使用 CloudFront 来启用 https。你考虑过吗?

标签: amazon-web-services google-chrome ssl amazon-s3 https


【解决方案1】:

正如我们在 cmets 中所讨论的,Chrome doesn't like mixed content anymore,也就是说,它不允许您在通过 https 提供服务的网站上嵌入 http 内容。

现在有多种选择可以完成这项工作:

  • 将主网站降级为http不要这样做,这是个糟糕的主意
  • 使存储桶或至少您嵌入的对象在 S3 中公开可读,并使用 S3 提供的本机 https 端点。它看起来像这样:
    https://<bucketname>.s3.<region>.amazonaws.com/<object-key>.jpg
    
    这与您当前的解决方案具有基本相同的相关成本。不过,您可能需要做一些烦人的 CORS 操作。
  • 在您的存储桶前设置 CloudFront 分配并将其配置为提供来自 S3 的内容。您可以使用源访问身份来保护 CloudFront 和 S3 之间的通信,甚至可以在 CloudFront 中自定义 TLS 配置。这将使您的缓存更接近您的用户,但会产生额外费用

【讨论】:

  • 谢谢@Maurice - 我需要使用静态网站,因为当 S3 图像不存在时,我会重定向到 lambda,它会在请求的尺寸(来自原始图像)中创建请求的图像,因此我需要使用 @987654328 @。即使我使用 HTTPS 制作了 CloudFront,在将这些对象分发到 CloudFront 缓存之前,它仍然无法从 S3“转发”新创建的对象。有什么解决办法吗?换句话说,在将对象添加到 S3 之前,CloudFront 可以通过.s3-website. 访问它之前有几分钟的延迟。
  • 您是否使用错误文档重定向到 API 网关以触发 lambda,或者您是如何构建的?这听起来像 超级怪异 实现:D 您还可以在 CloudFront 中使用 lambda @ edge 函数,当 S3 中没有数据时拦截响应并触发 lambda。
  • 我的错误。真正的原因是 CloudFront 缓存 307 响应 - 我的确切问题在此处描述 stackoverflow.com/questions/61012822/…
  • 好的,这是否意味着您的原始问题已解决?
  • 是的,莫里斯。已解决并标记为如此。如果您对 CloudFront 的缓存“307”有所了解,将不胜感激?
猜你喜欢
  • 2014-03-30
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多