【发布时间】:2016-11-16 16:19:18
【问题描述】:
我有一个有趣的小问题 - Heroku 上的一个应用程序被配置为使用 Heroku SSL (beta),但它似乎想对所有事情都使用 HTTPS,不管我做什么。
浏览器错误:
我在一个控制器上有redirect_to :protocol => 'http://', :status => :moved_permanently。对该控制器的请求得到:
www.mysite.com redirected you too many times.
ERR_TOO_MANY_REDIRECTS
相关代码:
DNS 设置:
ftp: www.mysite.com.herokudns.com
www: www.mysite.com.herokudns.com
宝石文件:
gem 'rack-ssl-enforcer'
gem 'rack-cors'
生产.rb:
** Not in effect**
#config.force_ssl = true
应用程序.rb:
# Note: no code inserted for rack-ssl-enforcer
config.middleware.insert_before 0, 'Rack::Cors' do
allow do
origins '*'
resource '*', headers: :any, methods: [:get]
end
end
我试图在一个控制器上避免使用 HTTPS:
requests_controller.rb:
before_action :avoid_ssl
def avoid_ssl
if request.ssl? && Rails.env.production?
redirect_to :protocol => 'http://', :status => :moved_permanently
end
end
我最近添加到requests_controller.rb 的代码引发了这个错误。我的应用程序中的某些东西希望一切都是 HTTPS,但 Heroku 支持告诉我:
“Heroku SSL 没有什么特别之处,重定向必须在您的应用程序内执行 - 跳过给定控制器的“强制 SSL”,这是一个代码更改”。
什么可能导致所有内容都指向 HTTPS?非常感谢。
【问题讨论】:
-
检查您的浏览器是否因为以前的 HTST 而没有重定向。 en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
-
@SimoneCarletti 就是这样!谢谢你。随时留下答案,我会接受。
标签: ruby-on-rails ruby-on-rails-4 ssl heroku