如何通过 https 和 heroku 上的 rails 服务云端资产?

Posted

技术标签:

【中文标题】如何通过 https 和 heroku 上的 rails 服务云端资产?【英文标题】:How to serve cloudfront assets via https with rails on heroku? 【发布时间】:2019-06-07 00:58:16 【问题描述】:

我正在使用 cloudfront 为我在 heroku 上的 rails 应用程序提供资产。通过 http 这工作正常。但是当我通过 https 访问我的网站时,资产不会加载,并且出现此错误:

Mixed Content: The page was loaded over HTTPS, but requested an insecure stylesheet. This request has been blocked; the content must be served over HTTPS

我尝试过的事情:

在 Rails 配置中的 URL 前面添加 https://。 仅在云端将原始协议策略设置为 https。 安装机架 Cors。

【问题讨论】:

【参考方案1】:

尝试设置此选项

app/config/environments/production.rb

# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
config.force_ssl = true

config.action_controller.asset_host = "<YOUR DISTRIBUTION SUBDOMAIN>.cloudfront.net"

文档https://devcenter.heroku.com/articles/using-amazon-cloudfront-cdn#testing cmets 对此发出警告:

如果您想使用 SSL 提供 Cloudfront 资产,您可以简单地 在亚马逊提供给您的分发域上使用 HTTPS。笔记, 虽然您可以为此目的创建 CNAME,为 Cloudfront 提供服务 通过您的 CNAME 和 SSL 访问的资产需要额外付费。

【讨论】:

以上是关于如何通过 https 和 heroku 上的 rails 服务云端资产?的主要内容,如果未能解决你的问题,请参考以下文章

通过 Gunicorn 在 Heroku 上的 Django-twoscoops-project(骨架)。如何设置Procfile?

如何通过部署在 Heroku 上的 Nodejs/Nestjs 服务器为我的 Angular 前端提供服务?

Cloudflare 上的 Heroku 自定义域:重定向过多

如何在heroku上的两个不同应用程序之间共享worker?

如何从反应客户端向运行在 Heroku 平台上的表达服务器发出 API 请求

ExpressJS 节点 HTTPS 服务器上的 Heroku 错误 H13