我有一个云前线的发行,有一个定制的来源。
我想使用Lambda@边缘原产地请求来修改和添加一些额外的标头,以便转发到我的原始服务器。
下面是我的Lambda函数。custom_header
在我的Lambda的Cloudwatch日志中是可见的,但是没有显示在我的自定义服务器请求头中:(。
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const headers = request.headers;
headers['custom_header'] = [{ key: 'custom_header', value: 'custom_header' }];
return callback(null, request);
}
我希望custom_header
在Node.js路由中在req.headers
下是可见的。
发布于 2019-03-02 20:38:38
可以通过以下结构传递自定义标头。
request.origin.custom.customHeaders
所以,代码应该看起来像。
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const headers = request.headers;
request.origin.custom.customHeaders['custom_header'] = [{ key: 'custom_header', value: 'custom_header' }];
return callback(null, request);
}
发布于 2021-09-20 15:25:43
您的问题可能是您使用的是“原产地请求”,而不是“查看器请求”触发器。
让我们看看这篇AWS文档中关于“我应该使用哪个触发器”的文章。
您想要对每个请求执行函数吗? 如果您希望函数对CloudFront为发行版接收的每个请求执行,将使用查看器请求或查看器响应事件。只有当请求对象没有在边缘位置缓存请求和源响应事件,并且CloudFront将请求转发到原点时,才会发生源请求。
我只是解决了一个类似的问题,你的-只是我尝试了原产地响应触发器。我在我的S3上设置了缓存(-max-age上传到S3的项目),然后我使用S3托管了一个静态站点,并在顶部使用了CloudFront。
我想,因为我的S3条目是缓存的,所以Origin触发器没有触发,因为正如AWS文章所说-- Origin /Response触发器只在缓存丢失时触发。
一旦我切换到Viewer响应,就可以了。
我正在学习这教程,即使在那里,lambda触发器设置的屏幕截图也有"Origin“,这误导了我。
https://stackoverflow.com/questions/53921794
复制相似问题