簡體   English   中英

在 AWS Cloudfront 源請求中返回帶有 set-cookie header 的響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM