HTTP 500 오류에 대한 응답 사용자 지정

HTTP 500 내부 서버 오류은(는) 서버에서 예기치 않은 조건이 발생하여 요청을 수행하지 못하는 것과 같은 서버측 오류를 나타냅니다.

요청 처리로 인해 예외가 발생하는 경우 Apache Sling 프레임워크(AEM이 빌드됨):

  • 예외를 기록합니다.

  • 응답 본문으로 를 반환합니다.

    • HTTP 응답 코드 500
    • 예외 스택 추적

오류 처리기로 표시된 페이지를 사용자 지정하면 500.jsp 스크립트를 만들 수 있습니다. 그러나 HttpServletResponse.sendError(500)이(가) 예외 캐쳐에서 명시적으로 실행되는 경우에만 사용됩니다.

그렇지 않으면 응답 코드가 500으로 설정되어 있지만 500.jsp 스크립트가 실행되지 않습니다.

500 오류를 처리하려면 오류 처리기 스크립트의 파일 이름이 예외 클래스(또는 슈퍼클래스)와 같아야 합니다. 이러한 모든 예외를 처리하기 위해 /apps/sling/servlet/errorhandler/Throwable.jsp 또는 /apps/sling/servlet/errorhandler/Exception.jsp 스크립트를 만들 수 있습니다.

NOTE
AEM as Cloud Service에서 CDN은 백엔드에서 5XX 오류가 수신될 때 일반 오류 페이지를 제공합니다. 백엔드의 실제 응답을 통과하려면 응답에 x-aem-error-pass: true 헤더를 추가해야 합니다.
이는 AEM 또는 Apache/Dispatcher 계층에서 온 응답에만 작동합니다. 중간 인프라 계층에서 발생하는 기타 예기치 않은 오류는 일반 오류 페이지를 계속 표시합니다.
CAUTION
작성자 인스턴스에서는 기본적으로 CQ WCM 디버그 필터가 활성화되어 있습니다. 따라서 항상 응답 코드 200이 생성됩니다. 기본 오류 처리기는 전체 스택 추적을 응답에 기록하여 응답합니다.
사용자 지정 오류 처리기의 경우 코드 500을 사용한 응답이 필요하므로 CQ WCM 디버그 필터를 사용하지 않도록 설정해야 합니다. 이는 응답 코드(500)가 반환되는 것을 보장하며, 이는 결국 올바른 Sling 오류-핸들러를 트리거한다.
게시 인스턴스에서 CQ WCM 디버그 필터가 항상 비활성화되었습니다(활성화됨으로 구성된 경우에도).

Experience Manager