在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中配置它?
答案 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
。