Laravel 5.3表单中的TokenMismatchException

时间:2017-01-06 22:18:15

标签: php laravel laravel-5 csrf laravel-5.3

我很惭愧地问这个问题,因为其他人多次问过这个问题,但我找不到任何解决办法。

我使用的是Laravel 5.3,我根据文档和其他stackoverflow主题创建了一个简单的表单。

在我的本地机器上一切正常。将我的项目放在服务器上之后,在提交表单后,此错误一直显示:

TokenMismatchException in VerifyCsrfToken.php line 68:

head部分添加了CSRF令牌:

<head>
<meta name="csrf-token" content="{{ csrf_token() }}" />
</head>

表单还包含csrf:

 <form method="POST" action="/save_new_order">
       {{ csrf_field() }}
       <input type="text" name="web_name"> 
       <textarea cols="30" rows="15" name="web_description"></textarea>                  
       <input type="email" name="web_email"> 
       <input type="submit" id="submitButton" value="WYŚLIJ" name="submit">
    </form>

我也尝试过使用:

<input type="hidden" name="_token" value="{{ csrf_token() }}"> 

而不是:

{{ csrf_field() }}

每次使用表单时,令牌都会保存在storage / framework / sessions /中。

请帮助我,我工作超过15个小时,到目前为止没什么。

2 个答案:

答案 0 :(得分:2)

当它在您的本地计算机上运行时,而不是在您的实时服务器上运行时,这可能是权限问题。检查Laravel的会话目录,并验证您的Web服务器用户是否具有rw权限。

此外,当您为本地和生产服务器使用相同的域时,请尝试清除Cookie。但你可能已经尝试了这个

答案 1 :(得分:2)

我的.env文件中有不可见的BOM字符。

我在记事本++中将它转换为utf8-without-BOM,现在可以正常工作。