我正在开发一个使用 SSL 连接的 Rails 应用程序。我目前正在使用第三方资源,即 js 和 css 文件来实现 map (OpenStreetMap)。我已经尝试将这些资源(js 和 css)导入我的应用程序,但 javascript 代码试图通过 HTTP 访问外部 WMS。
问题是当应用程序处于 HTTPS 时,Google Chrome 会阻止从 HTTP 访问第三方资源。
所以我在应用程序的某些页面上禁用了 SSL,并尝试按照我希望的方式强制使用 HTTP 或 HTTPS。
关注此博客:http://www.simonecarletti.com/blog/2011/05/configuring-rails-3-https-ssl/并且有效。
但是,当我使用 Google Chrome 将 HTTP 协议(protocol)强制用于将使用这些资源的页面时,它会强制 HTTPS 连接,从而导致无限循环。
如果我清除 Chrome 缓存(已经使用 HTTPS 访问了同一页面)以便通过 HTTP 访问它,它就可以工作。但是,如果我访问了 HTTPS 页面并尝试通过 HTTP 访问,Chrome 会强制 HTTPS 连接,从而导致无限循环。
问题是:我可以在请求中设置什么让 Chrome 接受连接吗?
问候
最佳答案
我一直在对此进行一些研究,结果证明在 Rails 3 上打开 force_ssl = true
会导致应用程序发送 HSTS header 。这里有一些关于它的信息:How to disable HTTP Strict Transport Security?
本质上,HSTS header 告诉 Chrome(和 Firefox)在特定时间内仅通过 HTTPS 访问您的网站。
所以...我现在为您提供的答案是,您可以通过在 Chrome 浏览器中转到 about:net-internals
并删除 HSTS 状态来清除自己的 HSTS 设置。
我认为这里的答案可以帮助您:Rails: activating SSL support gets Chrome confused
关于ruby-on-rails-3 - 谷歌浏览器强制使用 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14831863/