在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客户端。 在使用
cURL、Postman或浏览器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的标准错误处理。
相关阅读
- 在AEM as a Cloud Service教程中使用日志调试AEM as a Cloud Service。
- 《AEM Dispatcher指南》中的配置AEM Dispatcher。
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f