如何在Heroku上通过带有Rails的https通过Cloudfront资产服务?

时间:2019-01-12 08:05:02

标签: ruby-on-rails heroku https amazon-cloudfront

我正在使用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

我尝试过的事情:

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

1 个答案:

答案 0 :(得分:0)

尝试设置此选项

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上的

文档对此警告发表了评论:

  

如果您想使用SSL服务Cloudfront资产,则只需   在Amazon给您的分发域上使用HTTPS。注意,   同时您可以为此创建CNAME,以服务Cloudfront   您的CNAME和SSL上的资产有附加费用。