AWS CloudFront 为不同主机(前端和后端)设置 cookie
AWS CloudFront set cookie for different hosts (frontend and backend)
我正在使用 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,
}
问题是,当我尝试为前端设置 auth COOKIE 时。我看到使用正确的 COOKIES 请求后端,但浏览器未设置 COOKIE,这就是前端部分关闭对用户仪表板的访问的原因。如何为浏览器设置COOKIE? UI主机和后端主机不同。
P.S。如果我错过了任何有用的信息 - 让我知道,我会更新这个问题。
我找到了解决方案 - 使用一台主机作为前端和后端,现在它适合我。
我正在使用 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,
}
问题是,当我尝试为前端设置 auth COOKIE 时。我看到使用正确的 COOKIES 请求后端,但浏览器未设置 COOKIE,这就是前端部分关闭对用户仪表板的访问的原因。如何为浏览器设置COOKIE? UI主机和后端主机不同。
P.S。如果我错过了任何有用的信息 - 让我知道,我会更新这个问题。
我找到了解决方案 - 使用一台主机作为前端和后端,现在它适合我。