AWS Cloudfront 导致 CSRF 令牌不匹配异常
Posted
技术标签:
【中文标题】AWS Cloudfront 导致 CSRF 令牌不匹配异常【英文标题】:AWS Cloudfront causing CSRF Token Mismatch Exception 【发布时间】:2018-07-29 15:20:32 【问题描述】:好的,你好,我已经在 AWS ELB 上部署了我的 Laravel 应用程序,并为我的应用程序设置了 Cloudfront 分发。现在我正面临 CSRF 令牌不匹配。我知道这个错误可能是由多个可能错误的配置值引起的。现在我过去已经设法自己解决了这个问题,但那是很久以前的事了,我不知道我在哪里做了什么。因此,如果您对可能出现的问题和位置有一些提示,那么一定要按我的方式发送。谢谢
编辑:切换到 Cloudfront 后发生异常。我的问题是让它与 Cloudfront 一起工作。
【问题讨论】:
这是在尝试提交表单时还是什么? @Option 是的,它发生在我提交表单时。抱歉,忘记提了。在其他任何场合都没有发生在我身上。 在打开的<form>
标签下添加 csrf_field()
【参考方案1】:
所以问题在于 cookie 的转发,尤其是 XSRF_TOKEN
cookie。默认情况下,Cookie 不会通过云端转发,您必须设置白名单才能做到这一点。只需在“行为”部分编辑云端分发。另一个要考虑转发的 cookie 是 laravel_session
(如果您使用 cookie 会话)和 remember_*
(如果您使用记住登录功能)。
【讨论】:
+1k 花了一周的时间试图弄清楚这一点,我终于意识到这可能与 AWS Cloudfront 有关,并找到了您的帖子。送你一个大大的拥抱!!!以上是关于AWS Cloudfront 导致 CSRF 令牌不匹配异常的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk 上的 Rails 应用程序返回 422 并显示“无法验证 csrf 令牌”
csrf 令牌会在 laravel 中的每个请求上自动重新生成,这会导致生产服务器上的 csrf 令牌不匹配