【发布时间】:2019-03-06 01:44:07
【问题描述】:
我在 API Gateway 中设置了代理集成。
我可以使用https://7kbw9fcfa4.execute-api.us-east-1.amazonaws.com/dev/foo 之类的 URL 调用我的 lambda,这里的路径是 /dev/foo。
但是,如果我在前面设置 CloudFront,则 URL 变为 https://a45ex7tnds5r5o.cloudfront.net/foo,路径为 /foo。
在这两种情况下,我在 event 变量中都有相同的键:
-
path包含/foo -
requestContext.path包含/dev/foo
如何可靠地获取客户端在浏览器中看到的实际 URL? (使用 Cloudfront 和直接使用 API Gateway 时)
【问题讨论】:
-
您是否尝试过查看原始标头?此外,您是否启用了从 CloudFront 到 API Gateway 的标头。如果您不将标头列入白名单,您将无法从 CloudFront 获取它们。
-
@Kannaiyan 我将除
Host标头之外的所有标头都列入了白名单,因为建议不要转发它(否则它会破坏 Cloudfront -> API Gateway 连接)。Origin标头似乎没有用,因为它只包含域名,而不是路径(请参阅developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin)。
标签: amazon-web-services aws-lambda aws-api-gateway amazon-cloudfront