Ruby on rails RubyonRails将_重定向到相对URL
我有一个Rails 4应用程序托管在Cloudflare后面,启用了灵活的SSL选项,但Cloudflare和负载平衡器后面的应用程序服务器之间没有SSL 所以发生的情况是,例如,当用户使用HTTPS注册时,我重定向到欢迎页面Ruby on rails RubyonRails将_重定向到相对URL,ruby-on-rails,ruby,apache,http,Ruby On Rails,Ruby,Apache,Http,我有一个Rails 4应用程序托管在Cloudflare后面,启用了灵活的SSL选项,但Cloudflare和负载平衡器后面的应用程序服务器之间没有SSL 所以发生的情况是,例如,当用户使用HTTPS注册时,我重定向到欢迎页面 redirect_to :action => :welcome 。。。或者 redirect_to "/users/welcome" 。。。Rails抛出一个HTTP头“Location:”。这显然会中断会话并关闭SSL 我尝试过config.force_ssl
redirect_to :action => :welcome
。。。或者
redirect_to "/users/welcome"
。。。Rails抛出一个HTTP头“Location:”。这显然会中断会话并关闭SSL
我尝试过config.force_ssl,但浏览器进入了无限重定向循环
我无法将应用程序切换到SSL,因为它的某些部分必须使用HTTP,而且在网络上没有什么敏感的东西可以证明切换是合理的,而且我有一个或60个不同的网站建立在这个应用程序上,为所有这些应用程序购买证书将花费一大笔钱。我只想要Cloudflare的SSL,因为用户认为“小绿锁”意味着该站点安全可靠:)
那么,有没有一种方法可以使用相对URL使Rails重定向?与添加。。。在它重定向到的每个URL前面
TIA我在使用Apache时发现了一个简单的解决方法:重写30X头文件 这个问题还有一个关于编辑标头以删除协议和主机的答案,而不是重定向所有内容:
对于不使用Apache的解决方案,您可以将代码编写为:
redirect_to :action => :welcome, :protocol => '//'
或者
仅供参考,您可以从lets Encrypt获得免费证书,但为所有站点设置证书所需的工作量将非常大,而且这将使设置新站点变得复杂(现在是点击过程)…太复杂了。
Header edit Location "(^http[s]?://)([a-zA-Z0-9\.\-]+)" ""
redirect_to :action => :welcome, :protocol => '//'
redirect_to :action => :welcome, :only_path => true