在 laravel 5.7 中偶尔会出现 419 错误
Posted
技术标签:
【中文标题】在 laravel 5.7 中偶尔会出现 419 错误【英文标题】:Got 419 error occasionally in laravel 5.7 【发布时间】:2019-08-08 12:20:09 【问题描述】:我收到 419(抱歉,您的会话已过期。请刷新并重试。)偶尔在登录我的系统时使用不同的浏览器。 浏览器
Chrome(工作) Firefox(工作) 萨菲尔 (419) IE10 (419)我已经尝试了这些,但仍然不起作用。
使用不同的 laravel 版本(5.7.6、5.7.9、5.7.22、...)。 重新生成应用密钥。 在表单中尝试 csrf_field()
、@csrf
。
将SESSION_DOMAIN=xxx
添加到 .env 文件中
清除所有浏览器缓存。
最后,我关闭了csrf验证。 419没了,但是登录也失败了302错误。我不知道发生了什么,谁能帮帮我?
【问题讨论】:
你的 laravel 应用使用负载均衡器还是某种 CDN ? 重新生成应用程序密钥或清除浏览器缓存实际上可能会使问题变得更糟而不是更好。当预期保留的会话数据被刷新或会话 cookie 消失时,通常会出现此问题。尝试弄清楚是否有更具体的步骤来重现这一点可能是值得的。 302 也不是错误,而是重定向响应。 会话超时是否为 0?您的 cookie 是安全的还是仅 http 的?您是否有某种自定义中间件来确保访问? 没有负载均衡,没有CDN,没有自定义中间件,只有http是真的,问题是在不同的浏览器中偶尔会发生。 【参考方案1】:在按钮上添加@csrf代码来解决它:)
【讨论】:
OP 说他尝试在表单中输入@csrf
,但 id 不起作用。在回答之前仔细阅读问题,尤其是当他们 1 岁时。以上是关于在 laravel 5.7 中偶尔会出现 419 错误的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.7 Ajax 发布请求返回 419 状态码
Laravel 5.6 上的 419 Ajax 错误 - 已编辑