Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 5 config.force_ssl阻止对指向不同服务器的子域的访问_Ruby On Rails_Ssl_Cookies_Dns_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails Rails 5 config.force_ssl阻止对指向不同服务器的子域的访问

Ruby on rails Rails 5 config.force_ssl阻止对指向不同服务器的子域的访问,ruby-on-rails,ssl,cookies,dns,ruby-on-rails-5,Ruby On Rails,Ssl,Cookies,Dns,Ruby On Rails 5,我正在运行一个rails 5站点,config.force_ssl设置为true。我遇到的问题是,这会创建cookie,强制所有子域上都使用SSL,即使这些子域不是应用程序的一部分或托管在同一服务器上。例如,我有mail.example.com,它的DNS指向google,blog.example.com的DNS指向NameCheap服务器。config.force_ssl创建的cookie将这两个页面重定向到https,从而阻止对这些页面的访问 根据文档,我可以看出这是预期行为,显然有一种方法

我正在运行一个rails 5站点,config.force_ssl设置为true。我遇到的问题是,这会创建cookie,强制所有子域上都使用SSL,即使这些子域不是应用程序的一部分或托管在同一服务器上。例如,我有mail.example.com,它的DNS指向google,blog.example.com的DNS指向NameCheap服务器。config.force_ssl创建的cookie将这两个页面重定向到https,从而阻止对这些页面的访问

根据文档,我可以看出这是预期行为,显然有一种方法可以根据以下示例向ssl_选项添加排除项:

config.ssl_options = { redirect: { exclude: -> request { request.path =~ /healthcheck/ } } }
我试图让它与提到的子域一起工作,但它不起作用。设置了相同的cookie,我再次被阻止访问这些子域。也许我做得不对。这是一句话:

config.ssl_options = { redirect: { exclude: -> request { request.subdomain =~ /mail|link|blog/ } } }

或者,有没有其他方法可以解决这个问题?

我也有同样的问题,你找到解决办法了吗?这里可能出现了一些奇怪的浏览器/操作系统缓存,因为在一个子域上浏览网站时发送的邮件头会影响邮件服务器访问另一个子域,所以可能它刚刚开始工作…看起来新的\u framework\u defaults初始值设定器现在正适合使用,默认设置包括关于如何禁用子域的说明。我最终在控制器级别上执行了force_ssl,这不太安全,但允许我在ssl之外拥有子域。这里有一篇关于它的帖子:。您是否找到了使用config.ssl\u选项的解决方案?这确实是更好的方式。