2014-01-23 38 views
0

我使用像这样的字符串中轨重定向:在控制器我重定向这样如何使用路径作为字符串时获得redirect_to来更改主机?

path = "/blerg/blergs/blergs/blergs" 

domain = "www.google.com" 

所以:

redirect_to path, :status => :found, :host => domain 

问题是域没有改变,这是保持与应用程序域相同。在使用字符串作为路径时如何重定向主机参数?

我这样做是为了避免这种安全漏洞的原因,路径在它有一些PARAMS太: http://brakemanscanner.org/docs/warning_types/redirect/

+0

做我得到它的权利:1)你要添加的':host'参数(尽管是不需要的,因为它没有改变)出于安全考虑。 2)你的':path'参数是一个字符串。 3)你现有的'redirect_to'不相应地包含':host'参数。所以你需要另一种实现'redirect_to'加入':host'参数的方法 –

回答

2

正如你所看到的here,当你使用字符串路径时,rails使用请求的域名。

一种方式告诉网址你逝去的轨道是在另一个领域,就是设置协议:

 url = "http://#{another_domain_url}" 
    redirect_to url 

如果你想使用散列,你可以移动路径:host键(不测试):

 redirect_to :status => :found, :host => "#{domain}#{path}" 
-1

你可以这样说:

redirect_to "http://#{domain}#{path}" 
+0

这正是我不想做的,这就是为什么我说出来并与原因联系起来的原因。 – Smickie

相关问题