Law*_*eld 7 wildcard-subdomain amazon-web-services amazon-cloudfront aws-lambda aws-api-gateway
我们有一个指向CloudFront分布的通配符(*)子域.起源是API网关.
我们需要知道HostAPI网关中的原始标头,以便我们可以路由请求.
简单地将HostCloudFront中的标题列入白名单会在通过HTTP访问CloudFront分配时返回错误 - 可能是因为API Gateway需要Host标头来知道要调用的API.
如果是这种情况,是否可以Host通过X-Forwarded-HostCloudFront 将标头转发到API网关?或者......是否有另一种方法可以在API网关中使用通配符子域?
我在当天晚些时候回答这个问题,尽管它有一个已接受的答案,因为这个问题出现在对此问题的搜索顶部:
如今,完全可以Host通过 CloudFront 将原始标头动态转发X-Forwarded-Host到 API 网关,而无需按照建议硬编码自定义原始标头。
这可以通过创建查看器请求边缘函数(Lambda@Edge 或 CloudFront 函数)来实现,该函数在请求到达 CloudFront 之前拦截请求,将传入标头映射Host到请求标头X-Forwarded-Host,然后X-Forwarded-Host在传递请求标头之前将新标头附加到请求标头。
然后将X-Forwarded-HostAPI 网关源的标头列入白名单。
在 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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2699 次 |
| 最近记录: |