如何配置grails以始终在状态500上显示自己的错误页面

时间:2010-12-09 11:00:45

标签: security tomcat grails error-handling

UrlMappings.groovy中,我设置了"500"(controller:'error', action:'error'),以便使用我自己的错误控制器(和视图)。

它通常有效,但是当我尝试篡改请求输入(提交1MB大小的参数)时,我得到了一个Tomcat生成的错误页面,其中包含HTTP状态500.

首先我认为这个错误只是由Tomcat生成的,所以grails无法对它做任何事情,但是Exception是org.springframework.web.util.NestedServletException(嵌套的Exception java.lang.StackOverflowError)并且有很多{{1堆栈跟踪中的打包类。

我认为显示此异常包括对潜在攻击者的堆栈跟踪是危险的,所以如何配置grails以始终显示我自己的错误页面?或者只能在Tomcat中配置它?

2 个答案:

答案 0 :(得分:3)

这可能是Grails的错误。我发现this Nabble thread指示我this JIRA issue。这个问题已经解决了,但是Peter Ledbrook在评论中提到了different JIRA issue,这可能是您的问题,也可能不是。

如果看起来确实如此,那么评论中会提出一种解决方法,可以找到here。错误本身计划在1.4中修复;上面的修复解决方法针对1.3

答案 1 :(得分:1)

与Rob Hruska达成一致,我自己偶然发现了他的大部分链接。

我也怀疑 grails-error-pages-fix 插件应该解决问题 - 因为默认情况下grailsWebRequest servlet没有{{1}在 web.xml 中分配。

此插件使用的技术基本上与我在previous post中建议的技术相同。 (尽管如此,我在那里的评论可以看出,我自己的测试还没有得出一致的结论。)

最后,无论如何都可以实现custom servlet Filter