2010-12-09 2 views
5

UrlMappings.groovy에 내 오류 컨트롤러 (및보기)가 사용되도록 "500"(controller:'error', action:'error')을 설정했습니다. 나는 (1메가바이트 크기 매개 변수를 제출) 요청 입력을 조작 시도 할 때 일반적으로하지만, 작동상태 500에 자체 오류 페이지를 표시하도록 grails를 구성하는 방법

, 내가 Tomcat이 HTTP 상태 500

첫째로 나는이 오류 만 생성 된 생각 오류 페이지를 생성 있어요 Tomcat에 의해 grails가 그것에 대해 아무 것도 할 수 없도록하지만, 예외는 org.springframework.web.util.NestedServletException (중첩 예외는 java.lang.StackOverflowError)이고 스택 추적에 많은 org.codehaus.groovy.grails 패키지 클래스가 있습니다.

잠재적 인 공격자에게 스택 추적을 포함하여 예외를 표시하는 것이 위험하다고 생각합니다. 그렇다면 어떻게하면 항상 내 자신의 오류 페이지를 표시하도록 grails를 구성 할 수 있습니까? 또는 Tomcat에서 구성 할 수 있습니까?

답변

3

Grails 버그 일 수 있습니다. 나는 this JIRA issue로 나를 안내 한 this Nabble thread을 발견했다. 이 문제는 해결되었지만 Peter Ledbrook은 different JIRA issue에 링크되어있어 문제가 될 수도 있고 아닐 수도 있습니다.

만약 당신이 무슨 일이 일어나고있는 것처럼 보이면, here 찾을 수있는 의견에 제안 된 해결 방법이 있습니다. 버그 자체는 1.4에서 수정 될 예정입니다. 위의 수정 문제 해결 방법은 1.3을 목표로합니다.

+0

수정 프로그램을 사용하고 싶습니다. 그러나 "grails install-plugin myFolder/grails-error-pages-fix.zip"을 실행할 때 grails는 로컬 버전을 사용하는 대신 온라인으로 찾은 것 같습니다. 그리고 표준 저장소를 통해 사용할 수 없습니다 ... github에만 있습니다 : https://github.com/alkemist/grails-error-pages-fix 어떻게 설치할 수 있습니까? –

+0

아마도 원본 (다운로드 버튼이 오른쪽 상단에 있음)을 추출하고, 그것을 빌드 한 다음, 배포 가능 기능이 내장 된 플러그인을 설치할 수 있습니다. 나는 Github에서 Grails 플러그인을 설치 한 적이 없다고 말할 수 없으므로 나는 당신에게 지시하는 것이 최선이 아닌가 걱정된다. 하지만 아마도 다른 사람이 전화를 걸 수 있습니다. –

+0

"install-plugin http://download.github.com/alkemist-grails-error-pages-fix-303f215.zip"을 사용하여 알았습니다. 그러나 설치 프로그램에서 "No plugin.xml descriptor found!"라는 메시지가 나타나지 않습니다. (그리고 그것은 정말로 거기에 없다). 나는 실제 플러그인이 아니지만 프로젝트에 수동으로 통합되어야한다고 생각합니다 ... –

1

Rob Hruska와의 합의에 따라 링크를 직접 건너 뜁니다. 기본적으로 grailsWebRequest 서블릿이 <dispatcher>ERROR</dispatcher>web.xml을에 할당하지 않는 한 -

나는, 역시 플러그인이 문제를 해결한다고 Grails의 오류 - 페이지 - 수정 용의자.

이 플러그인에서 사용되는 기술은 기본적으로 previous post에서 제안한 기술과 동일합니다. (그럼에도 불구하고 저의 의견으로 볼 수 있듯이 내 견해는 일관된 결과를 이끌어 내지 못했습니다.)

마지막으로 어떤 경우에도 작동하는 한 가지는 custom servlet Filter을 구현하는 것입니다.

+0

+1 사용자 정의 필터의 경우, 대부분의 응용 프로그램에서 컨테이너에 오류를 처리하는 대신 제어를 제공하므로 대부분의 응용 프로그램에서이 작업을 수행합니다. –

관련 문제