我在Cloudflare后面托管了一个Rails 4应用程序,并且启用了Flexible SSL选项,但是Cloudflare和位于负载平衡器后面的应用程序服务器之间没有SSL。
所以发生了什么事,例如,当用户使用HTTPS进行注册并且我重定向到欢迎页面时...
redirect_to :action => :welcome
... 或者 ....
redirect_to "/users/welcome"
... Rails引发HTTP标头“位置:http : //www.example.com/users/welcome ”。这显然会中断会话并关闭SSL。
我尝试了config.force_ssl,但浏览器进入了无限重定向循环。
我无法将应用程序切换为SSL,因为它的某些部分必须使用HTTP,并且网络上没有什么敏感的东西可以证明切换的合理性,而且我在这个应用程序上建立了60个不同的网站,因此为所有网站购买证书都需要花费一笔不小的财富。我只想要Cloudflare的SSL,因为用户认为“小小的绿色锁定”意味着该站点是安全可靠的:)
那么,有没有办法使Rails使用相对URL进行重定向?而不是在重定向到的每个URL前面添加http://www.example.com ...?
TIA
使用Apache时,我发现了一个简单的解决方法:重写30X标头
http://blog.delouw.ch/2009/10/29/302-redirect-behind-ssl-terminate-proxies/
Header edit Location ^http://(.*)$ https://$1
这个问题也有一个关于编辑标头以删除协议和主机的答案,而不是重定向所有内容:
Header edit Location "(^http[s]?://)([a-zA-Z0-9\.\-]+)" ""
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句