AWS CloudFront 为不同的主机(前端和后端)设置 cookie

Posted

技术标签:

【中文标题】AWS CloudFront 为不同的主机(前端和后端)设置 cookie【英文标题】:AWS CloudFront set cookie for different hosts (frontend and backend) 【发布时间】:2021-09-17 23:14:48 【问题描述】:

我正在使用 bitbucket 和 AWS 创建 CI/CD。在存储在 S3 存储桶中的 AWS 前端,后端 - EC2 + ElasticBeanstalk。我想使用免费的 SSL,这就是我使用 CloudFront 包装它们的原因。现在我可以看到为非身份验证用户显示的所有内容。我使用 COOKIE 进行了身份验证,我的意思是我设置了 COOKIE 属性并在后端和前端检查它以访问用户仪表板。前端和后端使用不同的 CF 路由。这就是我尝试配置 CORS 的原因。对于 S3 存储桶,我设置了下一个 CORS 配置:

[
    
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    
]

我的后端正在使用下一个 CORS 配置(这是来自 express 应用程序的示例)


            allowedHeaders: [
                'Origin',
                'X-Requested-With',
                'Content-Type',
                'Accept',
                'X-Access-Token',
                'Access-Control-Allow-Methods'
            ],
            credentials: true,
            methods: 'GET,HEAD,OPTIONS,PUT,PATCH,POST,DELETE',
            origin: true,
            preflightContinue: false,
        

问题是,当我尝试为前端设置身份验证 COOKIE 时。我看到使用正确的 COOKIES 请求后端,但浏览器没有设置 COOKIE,这就是前端部分关闭对用户仪表板的访问的原因。如何为浏览器设置 COOKIE? UI 主机和后端主机不同。

附:如果我错过了任何有用的信息,请告诉我,我会更新这个问题。

【问题讨论】:

【参考方案1】:

我找到了解决方案 - 前端和后端使用一台主机,现在它适合我。

【讨论】:

以上是关于AWS CloudFront 为不同的主机(前端和后端)设置 cookie的主要内容,如果未能解决你的问题,请参考以下文章

我应该为 elb 和 aws S3 设置两个不同的 Cloudfront 发行版吗?

如何通过 CloudFront 访问 aws websocket

AWS 将 EC2 替换为 CloudFront

AWS Cloudfront重定向TOO_MANY次

AWS CloudFront CNAME 和分发域名关系不明确

AWS - Cloudfront、S3 和 W3TotalCache 的 CORS 标头失败