@coder-rust-tower-http
<skill_overview> 安全地使用 tower-http 来应用可重用的 HTTP 中间件 添加请求/响应跟踪 配置 CORS 启用压缩或超时 传播请求 ID tower-http GitHub tower-http 文档 </skill_overview> <layer_selection> 仅在 Cargo.toml 中启用所需的 tower-http 功能 对于请求跨度和延迟,优先使用 TraceLayer 将 CorsLayer 用于面向浏览器的 API 将 TimeoutLayer 用于外部调用和慢速处理程序</layer_selection> 尽早设置请求 ID,稍后传播 将跟踪置于压缩之外以实现完全可见性 将安全层 (CORS) 保持在边缘附近 <request_ids> 使用 SetRequestIdLayer + PropagateRequestIdLayer 使用一致的标头名称 (X-Request-Id) </request_ids> 不要在生产中使用宽松的 CORS 明确将来源、方法和标头列入白名单 将allow_credentials 与特定来源对齐 仅针对较大的响应启用压缩 避免压缩已经压缩的格式 <anti_patterns> 避免在产品中使用 CorsLayer::permissive 避免堆叠多个超时 避免在 TraceLayer 中记录敏感标头 </anti_patterns>
<skill_overview> 安全地使用 tower-http 来应用可重用的 HTTP 中间件 添加请求/响应跟踪 配置 CORS 启用压缩或超时 传播请求 ID tower-http GitHub tower-http 文档 </skill_overview> <layer_selection> 仅在 Cargo.toml 中启用所需的 tower-http 功能 对于请求跨度和延迟,优先使用 TraceLayer 将 CorsLayer 用于面向浏览器的 API 将 TimeoutLayer 用于外部调用和慢速处理程序</layer_selection> 尽早设置请求 ID,稍后传播 将跟踪置于压缩之外以实现完全可见性 将安全层 (CORS) 保持在边缘附近 <request_ids> 使用 SetRequestIdLayer + PropagateRequestIdLayer 使用一致的标头名称 (X-Request-Id) </request_ids> 不要在生产中使用宽松的 CORS 明确将来源、方法和标头列入白名单 将allow_credentials 与特定来源对齐 仅针对较大的响应启用压缩 避免压缩已经压缩的格式 <anti_patterns> 避免在产品中使用 CorsLayer::permissive 避免堆叠多个超时 避免在 TraceLayer 中记录敏感标头 </anti_patterns>