在某些页面上丢失 ssl

Losing ssl when on some pages

我正在使用 rails 4.2.2,在 Heroku 上部署到生产环境,并使用免费级别的 Cloudflare for ssl。在我的 production.rb 文件中,我设置了

config.force_ssl = true 

如果我没有以用户身份登录,则 ssl 可以工作,我会在浏览器 url 栏中看到挂锁,并且我会在所有未登录的页面上看到它。但是,一旦我登录该站点,所有登录页面上的挂锁就会消失。当我登录并选择不同的登录页面时,挂锁会在页面加载时暂时出现,但在加载完成后会消失。所有这一切都发生在 Chrome 和 Safari 上。我没有使用 Devise。

可能是什么原因造成的?

如果您正在使用 devise,请看一下这个:

https://github.com/plataformatec/devise/wiki/How-To:-Use-SSL-(HTTPS)

感谢 Cloudflare 的支持团队,我得以解决这个问题。

登录用户可以使用头像,但 gravatar_image_tag 未使用安全设置。这意味着图像是使用 http 而不是 https 传输的。这可以通过查看开发人员控制台看到,该控制台显示错误,指示页面显示的是混合的 http 和 https。为了解决这个问题,我刚刚使用了 gravatar_image_tag.

的安全设置

在我的例子中,页面访问了一些不安全的断言(例如:AWS S3 中的图像)。 Chrome 开发者控制台显示该页面是混合安全的。将 S3 图像链接从 http 更改为 https 使 ssl 工作。