跳至内容

cloudfront 将apigateway配置为后端的问题

0

我的cloudfront 将apigateway配置为后端,设置了禁止缓存,但是我的cloudfront没有将header 回传到apigateway

已提问 9 个月前252 查看次数

3 回答
0

当您将 API Gateway 配置为 CloudFront 的后端源时,遇到的 header 未传递到 API Gateway 的问题可能有几个原因:

  1. 源请求策略配置问题: 对于 API Gateway 源,您通常需要使用 "AllViewerExceptHostHeader" 源请求策略。这会使 CloudFront 在联系源时在 Host 标头中使用源域名,这通常是 API Gateway 所需的。如果您使用了 "AllViewer" 策略,可能会导致 403 Forbidden 错误或 header 传递问题。

  2. 行为配置检查: 确保您的 CloudFront 行为配置正确设置了允许传递必要的 HTTP 方法和 header。对于某些特殊情况(如 WebSocket),您需要确保包含 Upgrade 和 Connection 等 header。

  3. 响应头策略: 检查是否有任何响应头策略正在移除或修改您期望的 header。CloudFront 允许您通过响应头策略来自定义、添加或删除 HTTP 响应头。

  4. 缓存设置: 虽然您提到已禁用缓存,但仍需确认缓存策略设置正确。有时缓存可能会导致旧响应被返回,而不是从源获取新响应。

  5. API Gateway 配置: 确认您的 API Gateway 配置正确,包括适当的路由选择表达式和集成设置。

  6. 源域名配置: 确保您使用的是 API Gateway 的正确端点。有些用户发现使用 API Gateway 的执行域名(如 abc1.amazonaws.com)作为源,而不是自定义域名映射,可能会更有效。

如果问题仍然存在,您可以尝试创建 CloudFront 缓存失效以强制更新,或者考虑使用 CloudFront Functions 或 Lambda@Edge 来自定义请求/响应处理。
Sources
Backend and Frontend on same domain Cloudfront error | AWS re:Post
Socket connection Cloudfront / ApiGateway | AWS re:Post
Using custom domain name for CloudFront Distribution with an HTTP API | AWS re:Post
Remove or modify HTTP response headers in CloudFront | AWS re:Post
ResponseHeadersPolicyRemoveHeader - Amazon CloudFront

已回答 9 个月前

0

源为apigateway时,不能使用AllViewerExceptHostHeader这个源请求策略

已回答 9 个月前

0

果希望 CloudFront 将 header 回传到 API Gateway,需要配置适当的源请求策略。请求策略和缓存策略协同工作的说明: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/understanding-how-origin-request-policies-and-cache-policies-work-together.html

另外,源为 API Gateway 时,不可使用的是 AllViewer 策略,而不是 AllViewerExceptHostHeader。相反,AllViewerExceptHostHeader 是 Recommended for API Gateway。不同源请求策略差异请参考: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-origin-request-policies.html

AWS

已回答 7 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。