使用CloudFront函数重定向请求时,如何包含HTTP请求主体



我正在尝试向CloudFront分发版添加一种行为,以将请求重定向到my.domain/apiapi.my.domain。我尝试过常规的/api行为,但我从api网关收到403个错误,所以Reddit用户建议我尝试CloudFront函数。

我可以设置一个CloudFront函数来进行重定向,但它似乎正在从我的POST请求中删除HTTP请求体。

function handler(event) {
var request = event.request;
var headers = request.headers;
var host = request.headers.host.value;
var uri = request.uri;

var newURL = 'https://api.my.domain' + uri;
var response = {
statusCode: 302,
statusDescription: 'Found',
headers: { 
"location": { "value": newURL }
}
};
return response;
}

使用CloudFront功能是否可以做到这一点?或者我需要使用Lambda@Edge相反

我发现了-302重定向会导致客户端在没有HTTP主体的情况下向新域重新发出GET请求,即使原始请求是POST。解决方案是使用307重定向,强制客户端向新主机重新发出完全相同的请求。一旦我把302换成307,一切都如预期。