自定义错误处理程序显示的页面

AEM附带用于处理HTTP错误的标准错误处理程序;例如,通过显示:

chlimage_1-67

系统提供的脚本(位于/libs/sling/servlet/errorhandler下)用于响应错误代码,默认情况下,标准CQ实例提供以下脚本:

  • 403.jsp
  • 404.jsp
注意

AEM基于Apache Sling,因此请参阅https://sling.apache.org/site/errorhandling.html以了解有关Sling错误处理的详细信息。

注意

在创作实例上,默认启用CQ WCM调试过滤器。 这始终会导致响应代码为200。 默认错误处理程序通过将整个堆栈跟踪写入响应进行响应。

在发布实例上,CQ WCM调试过滤器​始终​处于禁用状态(即使配置为启用)。

如何自定义错误处理程序显示的页面

您可以开发自己的脚本,以在遇到错误时自定义错误处理程序显示的页面。 您的自定义页面将创建在/apps下,并覆盖默认页面(位于/libs下)。

注意

有关更多详细信息,请参阅使用叠加

  1. 在存储库中,复制默认脚本:

    • /libs/sling/servlet/errorhandler/
    • /apps/sling/servlet/errorhandler/

    由于目标路径默认不存在,因此在首次执行此操作时,将需要创建目标路径。

  2. 导航至 /apps/sling/servlet/errorhandler. 在此,您可以:

    • 编辑相应的现有脚本以提供所需的信息。
    • 创建和编辑所需代码的新脚本。
  3. 保存更改并测试。

注意

404.jsp和403.jsp处理程序已专门设计为满足CQ5身份验证的要求;特别是,允许在出现这些错误时进行系统登录。

因此,对这两个处理程序的更换应当非常谨慎。

自定义对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

注意

在创作实例上,默认启用CQ WCM调试过滤器。 这始终会导致响应代码为200。 默认错误处理程序通过将整个堆栈跟踪写入响应进行响应。

对于自定义错误处理程序,需要代码为500的响应 — 因此需要禁用CQ WCM调试筛选器。 这可确保返回响应代码500,这反过来又触发正确的Sling错误处理程序。

在发布实例上,CQ WCM调试过滤器​始终​处于禁用状态(即使配置为启用)。

在此页面上