【问题标题】:TokenMismatchException in Laravel 5.3 formLaravel 5.3 形式的 TokenMismatchException
【发布时间】:2017-05-21 18:44:04
【问题描述】:

问这个问题我感到很惭愧,因为其他人已经问过很多次了,但是我找不到适合自己的解决方案。

我使用的是 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 个小时,到目前为止还没有。

【问题讨论】:

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


    【解决方案1】:

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

    我在记事本++中将它转换为utf8-without-BOM,现在可以使用了。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 啊,好吧。你检查过你的 .env 文件的有效性吗?
      • 嗯,应该和本地一样 :) 你使用哪个会话驱动程序?
      • 好的。另一件事:检查您的 config/session 文件是否存在配置错误(其他域,然后是您的生产集,例如)
      • 还有:storage/framework/sessions/ 文件夹是否已存在于您的实时服务器上?
      • 好的,很好。另一个常见错误是您没有在 .env 文件中设置正确的页面域。请检查一下!
      猜你喜欢
      • 2017-03-28
      • 2017-09-29
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 2018-05-11
      • 2016-03-06
      相关资源
      最近更新 更多