【问题标题】:Pass through headers form Viewer request to origin request in AWS lambda@Edge将标头从查看器请求传递到 AWS lambda@Edge 中的源请求
【发布时间】:2018-09-14 23:11:41
【问题描述】:

是否有可能将标头从查看器请求传递到原始请求,而无需将 AWS Lambda@Edge 中的 Vary 标头列入白名单。

【问题讨论】:

  • 您需要将标头列入白名单以便在源请求触发器中看到它们是有充分理由的。具体来说,您希望完成什么?
  • @Michael:我有一个 API,它在响应之前从 Authorization 标头验证 JWT。如果我将此标头列入白名单,Cloud Front 将基于此标头进行缓存。但是对于所有请求,响应都是相同的。所以我不能将 Authorization 标头列入白名单。
  • “但是对于所有请求,响应都是相同的” 可能并不总是正确的。如果未经授权的请求,Authorization 标头不正确或不存在怎么办?对此的响应与有效请求不同,不是吗?如果标头值可能更改原始服务器响应,则它必须是缓存键的一部分。我知道所有 authorized 请求可能具有相同的响应,但如果它是决定哪些请求被授权的来源,那么这就是问题出现的地方。也许你的情况有所不同,不知何故;如果有,请指教。
  • 正如你所说,所有授权的请求都会得到相同的响应。如果未授权,则响应为 401 未授权且没有缓存控制标头。对于所有授权请求,响应将相同并具有 s-maxage 缓存控制标头,如果我将授权标头列入白名单,CloudFront 将基于标头进行缓存,几乎所有请求都将转发到 Origin。我的授权是基于令牌的。我可以在 Viewer-Request 本身中验证令牌,如果错过,我也需要在 Origin 中验证令牌。

标签: amazon-web-services aws-lambda aws-lambda-edge


【解决方案1】:

我在使用相同的标题时遇到了同样的问题。 我最终做的是在查看器请求中创建一个 lambda@edge,将 Authorization 复制到 X-Authorization 标头,然后另一个 lambda@edge 从 X-Authorization 复制回 Authorization。 这样头部被转发,但不用于缓存键。

我还向 AWS 客户服务开了一张票,请求让我选择哪些标头将用于缓存键。他们会调查的。

【讨论】:

  • 他们说他们将此要求传递给了 Lambda@Edge 团队。我不知道他们什么时候会实施,如果他们会实施的话。
猜你喜欢
  • 2020-01-22
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
相关资源
最近更新 更多