首页 > 解决方案 > Laravel 加密密钥在页面加载时“消失”

问题描述

我在使用 Laravel 和 Ajax 时遇到了一些问题,我无法通过 Google 或 Stackoverflow 解决这些问题。无论我看到什么解决方案,我都已经考虑过了。

偶尔我会收到 500 错误(有时是 401)。它只发生在 Ajax 上,这表明我没有正确发送 CSRF 令牌。

但是 CSRF 是在每个页面加载上,并且问题开始于 4 天前,而该项目大约有一个月的历史。它发生在 10 个 Ajax 调用中可能有 1 个。其他 9 个将执行得很好。

Ajax 调用在页面加载后立即进行。Laravel 是否有可能没有更新对传入 Ajax 调用的期望?没有其他 Ajax 调用会导致此问题。

laravel.log 说:

production.ERROR: No application encryption key has been specified. {"exception":"[object] (RuntimeException(code: 0): No application encryption key has been specified. at C:\\....\\vendor\\laravel\\framework\\src\\Illuminate\\Encryption\\EncryptionServiceProvider.php:42)

[堆栈跟踪]

这对我来说非常奇怪,有两个原因。首先,存在加密。如前所述,该项目已经存在很长时间,问题是零星的。其次,它说“production.ERROR”,但环境是本地的。我在 .env 文件中有这个:

APP_ENV=local

有人对如何解决或如何进一步调试问题有任何想法吗?我在这里有点空白。

更新:这个问题肯定与页面加载时立即调用的 AJAX 调用有关。我刚刚在不同的项目中出现了完全相同的问题,项目中的所有其他 AJAX 调用都按预期工作;但是在页面加载时立即调用的那个会偶尔出现 401 和 500 失败。

标签: ajaxlaravelhttp-status-code-500laravel-environmentlaravel-encryption

解决方案


对于可能仍然遇到此问题的任何人,请尝试以下操作: php artisan config:clear


推荐阅读