首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Cloudfront Lambda@边缘原产地请求中添加自定义标头?

如何在Cloudfront Lambda@边缘原产地请求中添加自定义标头?
EN

Stack Overflow用户
提问于 2018-12-25 11:09:20
回答 2查看 6K关注 0票数 2

我有一个云前线的发行,有一个定制的来源。

我想使用Lambda@边缘原产地请求来修改和添加一些额外的标头,以便转发到我的原始服务器。

下面是我的Lambda函数。custom_header在我的Lambda的Cloudwatch日志中是可见的,但是没有显示在我的自定义服务器请求头中:(。

代码语言:javascript
运行
复制
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下是可见的。

EN

回答 2

Stack Overflow用户

发布于 2019-03-02 20:38:38

可以通过以下结构传递自定义标头。

request.origin.custom.customHeaders

参考文献:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html#lambda-event-structure-request

所以,代码应该看起来像。

代码语言:javascript
运行
复制
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);
}
票数 7
EN

Stack Overflow用户

发布于 2021-09-20 15:25:43

您的问题可能是您使用的是“原产地请求”,而不是“查看器请求”触发器。

让我们看看这篇AWS文档中关于“我应该使用哪个触发器”的文章。

您想要对每个请求执行函数吗? 如果您希望函数对CloudFront为发行版接收的每个请求执行,将使用查看器请求或查看器响应事件。只有当请求对象没有在边缘位置缓存请求和响应事件,并且CloudFront将请求转发到原点时,才会发生请求。

我只是解决了一个类似的问题,你的-只是我尝试了原产地响应触发器。我在我的S3上设置了缓存(-max-age上传到S3的项目),然后我使用S3托管了一个静态站点,并在顶部使用了CloudFront。

我想,因为我的S3条目是缓存的,所以Origin触发器没有触发,因为正如AWS文章所说-- Origin /Response触发器只在缓存丢失时触发。

一旦我切换到Viewer响应,就可以了。

我正在学习教程,即使在那里,lambda触发器设置的屏幕截图也有"Origin“,这误导了我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53921794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档