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