amazon-web-services - AWS S3 图像仅通过 HTTP 提供服务,但 Chrome 升级到 HTTPS

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

我无法使 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 端点。它看起来像这样:
    https://<bucketname>.s3.<region>.amazonaws.com/<object-key>.jpg
    
    这与您当前的解决方案的相关成本基本上相同。不过,您可能需要做一些烦人的 CORS 事情。
  • 在您的存储桶前面设置一个 CloudFront 分配,并将其配置为提供来自 S3 的内容。您可以使用源访问身份来保护 CloudFront 和 S3 之间的通信,甚至可以在 CloudFront 中自定义 TLS 配置。这将使您的缓存更接近用户,但会产生额外费用

关于amazon-web-services - AWS S3 图像仅通过 HTTP 提供服务,但 Chrome 升级到 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66220904/

相关文章:

ssl - 安全页面上 iframe 中的不安全内容

ssl - 什么是 SSL、TLS 和 SSL/TLS?

python-3.x - 从 AWS 使用 SES 发送电子邮件时出现 "Connection unexpectedly closed"错误

amazon-web-services - alpine linux 上的 awscli 版本 2

amazon-web-services - Docker,GitLab并将镜像部署到AWS EC2

amazon-web-services - Amazon QuickSight 嵌入式仪表板 - 如何在我的网络应用程序中缓存用户 session (计费和时间问题)

html - CSS 背景颜色被 Chrome 浏览器上的滚动条删除

html - 覆盖用户代理样式表 - Chrome

javascript - 如何在 Chrome 扩展程序中将 URL 添加到下载管理器?

java - JDBC 参数 verifyServerCertificate=false 无需客户端 keystore 和信任库即可连接