在AEMaaCS错误响应中保留X-Correlation-Id (404/500)

在Adobe Experience Manager as a Cloud Service中,使用X-Correlation-Id标头可跨AEM、Dispatcher和CDN层跟踪请求。 虽然此标头显示在成功的(200 OK)响应中,但在错误响应(如​ 404 Not Found ​或​500 Internal Server Error)中缺少它,即使AEM日志确认它已设置。 默认情况下,CDN会将AEM错误响应替换为合成页面,这会删除自定义标头。 这会中断监控和调试工作流,导致难以将客户端故障与后端日志相关联。

要解决此问题,请将x-aem-error-pass: true标头添加到错误响应。 这会告知CDN转发原始AEM响应,而不是生成合成错误页面,以确保在所有响应类型中保留X-Correlation-Id标头。

描述 description

环境

  • Adobe Experience Manager as a Cloud Service (AEMaaCS)
  • 使用responseTransformations的CDN配置
  • 上下文:跨AEM、Dispatcher和CDN实施关联ID或跟踪机制时

问题/症状

  • X-Correlation-Id标头存在于200 OK响应中,但在404或500响应中缺失。
  • AEM日志显示标头已设置,但它不会访问浏览器或API客户端。 在使用cURLPostman或浏览器developer tools验证请求跟踪或调试行为时注意。
  • 由于缺少关联标头,监控系统无法跟踪失败的事务。
  • CDN配置似乎禁止在错误响应中使用标头。

解决方法 resolution

要允许AEM的原始错误响应及其标头访问客户端,请执行以下操作:

  • 将AEM错误处理程序配置为在错误响应中包含标头x-aem-error-pass: true

  • 这会指示CDN绕过合成错误页面生成,并将原始AEM或Dispatcher响应(包括其标头)直接转发到客户端。

  • 应用此更改后:

    • X-Correlation-Id标头同时出现在成功和失败的响应中。
    • 客户端监控工具可以准确地跟踪整个请求生命周期。

其他注意事项:

  • 安全性和合规性:在生产环境中启用此标头之前,请确保错误负载不会公开敏感的内部详细信息。
  • 范围:此行为仅适用于AEM或Dispatcher生成的响应。 CDN级别的错误仍会提供合成页面。
  • 常见误解: responseTransformations无法在合成错误响应中重新注入标头。
  • 测试提示:使用curl -i -v或浏览器开发人员工具在应用修复之前和之后验证标头是否存在。 例如:-i -v https:///path-that-triggers-error

最佳实践推荐:

  • 始终在后端请求中生成并设置关联ID。
  • 在日志和标头中包含同一ID。
  • 对于需要完全跟踪的错误响应,请使用x-aem-error-pass: true,特别是在调试或集成测试期间。
  • 将生产中的使用限制为受控场景,以避免覆盖CDN的标准错误处理。

相关阅读

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f