我无法使 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
。
如何让它发挥作用?
最佳答案
正如我们在评论中讨论的那样,Chrome doesn't like mixed content anymore ,即它不会让您在通过 https
提供服务的网站上嵌入 http
内容。
现在有多种选择可以实现此目的:
将主网站降级为(不要这样做,这是一个糟糕的主意)http
- 使存储桶或至少是您在 S3 中嵌入的对象可供公开读取,并使用 S3 提供的 native
https
端点。它看起来像这样:
这与您当前的解决方案的相关成本基本上相同。不过,您可能需要做一些烦人的 CORS 事情。https://<bucketname>.s3.<region>.amazonaws.com/<object-key>.jpg
- 在您的存储桶前面设置一个 CloudFront 分配,并将其配置为提供来自 S3 的内容。您可以使用源访问身份来保护 CloudFront 和 S3 之间的通信,甚至可以在 CloudFront 中自定义 TLS 配置。这将使您的缓存更接近用户,但会产生额外费用。
关于amazon-web-services - AWS S3 图像仅通过 HTTP 提供服务,但 Chrome 升级到 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66220904/