【发布时间】: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