AWS 服务器上的 Laravel 不返回 Set-Cookie 标头

Posted

技术标签:

【中文标题】AWS 服务器上的 Laravel 不返回 Set-Cookie 标头【英文标题】:Laravel on AWS server doesn't return Set-Cookie header 【发布时间】:2021-07-02 08:10:27 【问题描述】:

在开发环境中

我在本地 php 服务器中安装了laravel/sanctum 并访问了/api/csrf-cookie,响应中存在Set-Cookie 标头,并且正确设置了cookie(会话和xsrf-token)。

由于前端和后端在开发环境中的端口号不同,所以我也使用fruitcake/laravel-cors并添加headers以允许CORS。前端浏览器的请求也成功了。

在云环境中

我将这些项目部署到 CloudFront。当我访问example.cloudfront.net/api/csrf-cookie 时,响应中不存在Set-Cookie 标头。我也从前端尝试过,但没有找到 cookie。所有路由都正常工作,但只有Set-Cookie 不工作。 CloudFront 路由在这里。

CloudFront 路由

example.cloudfront.net/ -> S3 (nuxt static generated site)

example.cloudfront.net/api/csrf-cookie -> ALB -> EC2 (laravel on nginx)

环境

SESSION_DOMAIN=example.cloudfront.net
#SESSION_DOMAIN=[local ip without the port] # works in local

如何从云端环境获取cookies?

【问题讨论】:

您在浏览器网络选项卡响应中看到了什么? 【参考方案1】:

我在 CloudFront 中将 Forward Cookies 设置为 All,然后一切顺利。

【讨论】:

以上是关于AWS 服务器上的 Laravel 不返回 Set-Cookie 标头的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS AutoScaling 中添加 Laravel 环境文件

如何让 Laravel 与 AWS 上的 Redis 集群一起工作

无法提供目录 /var/www/html/public/ [Laravel - Aws Elasticbeanstalk]

Laravel 8 上的 League/flysystem-aws-s3-v3 其他软件包需要较低版本

AWS Elastic Beanstalk - 在环境属性中设置 .env Laravel

AWS 中的 Laravel WebSockets 推送器