[英]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
標頭。 另一方面,我希望將/me
與Authorization
標頭一起緩存(因為我不希望用戶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.