我需要更改Grails控制器中ServletRequest
对象的serverName。由于serverName是一个只读属性,我无法弄清楚如何执行此操作。
答案 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