以编程方式更改ServletRequest服务器名称

时间:2014-05-21 02:13:55

标签: java spring grails

我需要更改Grails控制器中ServletRequest对象的serverName。由于serverName是一个只读属性,我无法弄清楚如何执行此操作。

2 个答案:

答案 0 :(得分:3)

最正确的做法可能是设置一个聪明的过滤器或重定向,以及#34;修复"您的servlet甚至介入之前的请求URL。我对如何做到这一点一无所知;如果你想这样做,你应该问serverfault.com

在java中,你可以通过创建自己的HttpServletRequestWrapper子类来伪造它,它提供setServerName()并覆盖getServerName(),同时将所有其他方法委托给超类。然后,您可以提供一个过滤器,用于创建请求的实例并将其发送到链中。

public void doFilter(ServletRequest request, ServletResponse response,
             FilterChain chain) 
             throws IOException, ServletException {
  YourHttpServletRequest yourRequest =
              new YourHttpServletRequest(request, newServerName);
  chain.doFilter(yourRequest, response);
}

答案 1 :(得分:0)

如果我理解正确,CORS过滤器可能有所帮助 我在之前的项目中使用了http://software.dzhuvinov.com/cors-filter.html

但您也可以在github上查找例如https://github.com/eBay/cors-filter

相关问题