php Laravel CsrfToken在切换服务器后刷新时过期

soat7uwm  于 2023-09-29  发布在  PHP
关注(0)|答案(2)|浏览(114)

我知道我的问题不是因为Laravel,而很可能是PHP配置(会话),但我不确定要检查什么。我在homestead上运行这个特定的项目,它很好。现在,在我提交一个表单(它是一个步骤控制器,post表单->转到步骤2等)并刷新页面后,我的csrf令牌无效。
我以为这是因为会话生存期等或新令牌的生成,但没有。token是相同的,但我刷新页面后仍然得到TokenMismatchException
环境和宅基地差不多(nginx(最新),php(5.6,我不知道homestead有什么))。登录工作正常,我保持登录,而浏览,但当我通过的步骤,这种情况发生。

问题及解决方案:

根据我忘记更新的评论,我发现问题实际上是事实,开发服务器被迫通过cloudflare,但Laravel中的基本URL留在http://...-我只是添加到AppServiceProvider

$this->app['request']->server->set('HTTPS', true);

而且它没有出现验证错误。

tvokkenx

tvokkenx1#

您是否在提交表单时发送一个csrf令牌?如果没有:你是如何建立你的表单的,用FormBuilder还是Html?

FormBuilder

在表单生成器中,CSRF令牌已经发布,因此不需要发送它。

Html

<form method="POST" action="/profile">
    {{ csrf_field() }} //This is what you need!
    ...
</form>

您没有提供错误日志,请在您的laravel项目中检查存储/日志,然后向我们提供错误,以便我们可以帮助您。

2ul0zpep

2ul0zpep2#

根据我忘记更新的评论,我发现问题实际上是事实,开发服务器被迫通过cloudflare,但Laravel中的基本URL留在http://...-我只是添加到AppServiceProvider

$this->app['request']->server->set('HTTPS', true);

而且它没有出现验证错误。

相关问题