我已在force_ssl
中添加ApplicationController
,稍后会删除,但现在,每个请求仍会提示为https。我曾尝试将config.force_ssl = false
添加到application.rb
和environments/development.rb
等所有配置文件中,但它不起作用。当我重新启动服务器时,请求仍然会转换为https。任何线索?
更新:
只有在我请求应用程序的根目录时才会发生这种情况。 http://localhost:3000/
,但在我的config / routes.rb文件中,我已明确指定了根目录的网址:root :to => 'home#index'
答案 0 :(得分:12)
您会看到HTTP Strict Transport Security max-age
的效果,Rack::SSL
由config.force_ssl = true
({{1}}设置)设置为高点。
答案 1 :(得分:3)
除了重新启动应用程序外,您还必须清除浏览器缓存。
答案 2 :(得分:1)
对于那些仍然不清楚的人来说,这就是我做的伎俩。
在application_controller.rb中:
before_filter :expire_hsts
[...]
private
def expire_hsts
response.headers["Strict-Transport-Security"] = 'max-age=0'
end
在production.rb
config.force_ssl = false
清除网络浏览器的缓存,就是这样!
答案 3 :(得分:0)
yfeldblum绝对正确。禁用它并使chrome忘记标题可能会很痛苦。
这是我最终放入config / application.rb
的内容config.middleware.insert_before(Rack::Lock, Rack::SSL, hsts: false, exclude: proc { |env|
!env['PATH_INFO'].start_with?('/manage')
})
**注意A:hsts:false是关键位
**注意B:我使用的是1.9,所以我的哈希语法可能与你的不同。
除此之外,我必须在Chrome chrome:// net-internals / #hsts中打开此网址并删除具有此标头集的域。
值得庆幸的是,这并没有让它产生,因为Rack :: SSL在这个标题上设置了很长的过期时间。
答案 4 :(得分:0)
如果您使用的是nginx,请参阅选项:
proxy_set_header X-Forwarded-Proto https;
并禁用它!