gpt4 book ai didi

amazon-web-services - 将 CloudFront 主机 header 转发到 API 网关

转载 作者:行者123 更新时间:2023-12-01 17:55:32 26 4
gpt4 key购买 nike

我们有一个指向 CloudFront 发行版的通配符 (*) 子域。起源是API网关。

我们需要知道 API Gateway 中的原始 Host header ,以便我们可以路由请求。

通过 HTTP 访问 CloudFront 分配时,仅将 CloudFront 中的 Host header 列入白名单会返回错误 - 可能是因为 API Gateway 需要 Host header 来了解要调用哪个 API。

如果是这种情况,是否可以通过 X-Forwarded-HostHost header 从 CloudFront 转发到 API 网关?或者...是否有其他方法可以通过 API Gateway 使用通配符子域?

最佳答案

我今天晚些时候才回答这个问题,尽管它有一个已接受的答案,因为这个问题出现在对此问题的搜索顶部:

如今,完全可以通过 X-Forwarded-Host 将原始 Host header 从 CloudFront 动态转发到 API 网关,而无需硬编码自定义 header 按照建议的原始 header 。

这可以通过创建 Viewer Request edge function 来完成(Lambda@Edge 或 CloudFront 函数)在请求到达 CloudFront 之前拦截请求,将传入的 Host header 映射到 X-Forwarded-Host,然后附加新的X-Forwarded-Host 到请求的 header ,然后再传递。

然后将 API 网关源的 X-Forwarded-Host header 列入白名单。

在 Node.js 中,边缘函数如下所示:

export function handler(event, context, callback) {
const request = event.Records[0].cf.request;

request.headers['x-forwarded-host'] = [{
key: 'X-Forwarded-Host',
value: request.headers.host[0].value
}];

return callback(null, request);
}

关于amazon-web-services - 将 CloudFront 主机 header 转发到 API 网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39222208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com