2013-02-12 42 views
7

我正在开发一个使用SSL连接的Rails应用程序。我目前使用第三方资源是js和css文件来实现地图(OpenStreetMap)。我已经尝试将这些资源(js和css)导入到我的应用程序中,但javascript代码尝试通过HTTP访问外部WMS。Google Chrome Forces HTTPS

问题是Google Chrome在应用程序处于HTTPS状态时阻止从HTTP访问第三方资源。

因此,我在应用程序的某些页面上禁用了SSL,并试图按照我的需要强制使用HTTP或HTTPS。

关注此博客:http://www.simonecarletti.com/blog/2011/05/configuring-rails-3-https-ssl/它的工作原理。

但是,当我强制使用Google Chrome浏览器使用这些资源的页面上的HTTP协议时,它会强制导致无限循环的HTTPS连接。

如果我清除Chrome缓存(已使用HTTPS访问过相同页面),以便通过HTTP访问它,它可以正常工作。但是,如果我访问了HTTPS页面并尝试通过HTTP访问,则Chrome强制HTTPS连接导致无限循环。

现在的问题是:在请求中可以设置什么,导致Chrome接受连接?

问候

回答

10

我一直在做这方面的一些研究和事实证明,打开force_ssl = true on Rails的3致使该应用发送的HSTS头。这里有一些关于它的信息:How to disable HTTP Strict Transport Security?

从本质上讲,HSTS标头告诉Chrome(和Firefox)只能通过HTTPS访问您的网站一段时间。

所以...我现在给你的答案是你可以通过在Chrome浏览器中去about:net-internals并清除HSTS状态来清除你自己的HSTS设置。

我想这里的答案可以帮助你:Rails: activating SSL support gets Chrome confused

+0

谢谢你Skander M!问题在于HSTS。我使用rack-ssl-enforcer gem解决了这个问题,迫使HSTS过期。现在,即使Chrome缓存设置为强制HTTPS,我也可以在我想要的网址上禁用HTTPS。问候 – user2064568 2013-02-14 21:06:38