繁体   English   中英

如何在不考虑标头的情况下有时用特定标头缓存Cloudfront响应?

[英]How to cache cloudfront response sometime with a specific header and sometime without taking account the headers?

我正在将Apigateway与Cloudfront发行版一起使用。 我已经设置了自定义授权者。 该分发配置为转发列入白名单的标题Authorization

例如,我有2个网址:

  • http://domain.tld/me (已登录的用户信息)
  • http://domain.tld/products (产品集合)

目标是缓存/products不基于 Authorization标头。 另一方面,我希望将/meAuthorization标头一起缓存(因为我不希望用户B从用户A获取缓存的信息 )。 这两个网址均由授权者保护。

我怎样才能做到这一点 ?

如果您需要先基于Authorization标头对请求进行身份验证,然后再让它们查看/products但又不想基于Authorization标头对对象进行缓存,则无法将CloudFront与API Gateway自定义授权方一起使用,因为CloudFront无法在没有缓存的情况下传递标头-这样的配置没有意义,因为CloudFront根本不知道请求是否应被授权。

一种解决方法是使用Lambda @ Edge Viewer Request触发器而不是自定义授权者,以基于Authorization允许/禁止在/products路径上访问CloudFront。 如果“查看者请求”触发器将控制权返回给CloudFront(而不是发出自己的内部生成的响应),则将检查缓存,并从缓存中提供响应(命中)或从源中获取响应(未命中)。 标头无需白名单即可被查看者请求触发器访问。

如果后端要求通用身份验证令牌的路径不会因用户而异,则CloudFront可以使用“自定义来源报头”注入该令牌。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM