【问题标题】:Redirect service requests to another server将服务请求重定向到另一台服务器
【发布时间】:2012-11-22 01:37:29
【问题描述】:

我创建了一个过滤器,以便我可以拦截所有控制器操作并将请求转发到不同的服务器。 我需要根据用户代理临时重定向。

所以我在http://www.mysite1.com中有以下内容

class DealsFilters {

    def filters = {
    all(controller: '*', action: '*') {
        before = {
                if (someConditionHere)
                {
                    redirect(url:"http://www.mysite2/")
                    return
                }               
        }
    }       
}

我想知道的是请求及其所有参数是否会正确传递给 mysite2?
即 mysite1 充当服务并接收获取用户数据、更新交易、添加新用户等的请求...

mysite2 是 mysite1 的新版本(mysite1 将在 mysite2 测试后停用)。

它像重定向一样简单吗?

谢谢

【问题讨论】:

  • 是否有一些原因阻碍您在虚拟主机配置上编写简单的 301 重定向?最好避免这种额外的和特定的代码。
  • @lucke - 我需要从请求中提取用户代理并重定向,如果它包含某个字符串,即移动设备应用程序版本。不确定这在虚拟主机配置中是否可行?
  • 明白了,我认为这在虚拟主机配置 AFAIK 中是不可能的。

标签: http grails http-redirect


【解决方案1】:

documentation 表示,如果您使用 url 参数执行重定向,您的 url 应该包含发送新请求所需的所有信息。

我猜你应该重新创建你的网址,或多或少像这样:

redirect(base: 'http://www.mysite2/', controller: params.controller, action: params.action, params: params)

未经测试,但它应该适用于大多数情况。让我知道:)

【讨论】:

  • 我实际上使用的是 grails 1.3.7。 grails.org/doc/1.3.7/ref/Controllers/redirect.html 网址可以吗?
  • redirect(url: 'mysite2/') 即使在 grails 1.3.x 中也是一个有效的调用,不幸的是,该版本中没有基本参数来执行我建议你的重定向。我想升级到 grails 2 不是一种选择,是吗?
  • 目前不能升级 :(
【解决方案2】:

正如向lucke84 指出的那样,我正在使用 grails 1.3.7(我应该在原始问题中说明这一点)。

发现以下链接给了我大部分答案:
Best practice for redirecting from one web domain to another in Grails?

redirect(url:"http://localhost:8080${request.forwardURI}?${request.queryString}",params:params)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多