![](/img/trans.png)
[英]How to remove Cloudfront Headers on Viewer Response (Set-Cookie)
[英]returning response with set-cookie header in AWS Cloudfront origin request
在我的 CloudFront 原始請求 lambda@edge function 中,我想返回一個響應,該響應將在瀏覽器中設置一個 cookie 值並重定向到其他頁面。 我通過以下返回語句來做到這一點:
return {
status: '302',
statusDescription: 'Found',
headers: {
location: [
{ key: 'Location', value: 'my.website.com' },
],
'set-cookie': [
{ key: 'Set-Cookie', value: 'key=value; Max-Age=600' },
]
}
};
不幸的是,CloudFront 似乎刪除/忽略了這個set-cookie
header 並且瀏覽器收到了沒有它的響應。 有趣的是,完全相同的代碼在放置在 CloudFront 查看器請求 function 中時可以工作。 有沒有辦法制作原始請求 lambda 以在響應中保留 set-cookie header ?
解決方案是使用Cookies - include specified cookies
選項打開,並使用正確的白名單 cookie 名稱。 問題中的行為是由以下原因引起的(如文檔所述):
不要將 cookies 轉發到您的源 - CloudFront 不會根據查看器發送的 cookie 緩存您的對象。 此外,CloudFront 在將請求轉發到您的源之前刪除 cookies,並在將響應返回給您的查看器之前從響應中刪除 Set-Cookie 標頭。
要防止通過列入白名單的 cookie 名稱進行緩存,請將以下 header 添加到響應中: Cache-Control: no-cache="Set-Cookie"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.