【问题标题】:How to solve TokenMismatchException in VerifyCsrfToken.php line 67如何解决 VerifyCsrfToken.php 第 67 行中的 TokenMismatchException
【发布时间】:2017-01-31 11:23:37
【问题描述】:

当我提交表单时,我收到一个错误。您可以查看 Error Related Token Mismatch Exception。

如何解决

VerifyCsrfToken.php 第 67 行中的 TokenMismatchException:错误

我已经添加了令牌变量。

<input name="_token" value="dZfqvG7m1G0TGtXtWkDoWFXs5wqIwH86mMzCKfTy" type="hidden">

还有其他解决办法吗

【问题讨论】:

  • TokenMismatchException的可能重复
  • 您能告诉我们您发送的请求数据吗?它应该有一个 _token。
  • 你真的使用&lt;input name="_token" value="dZfqvG7m1G0TGtXtWkDoWFXs5wqIwH86mMzCKfTy" type="hidden"&gt;csrf_field()csrf_token()吗?

标签: php laravel-5 laravel-5.2


【解决方案1】:

尝试检查配置文件夹中的session.php 文件。可能你的 laravel 安装路径不对。

同时尝试检查您的应用程序是否具有会话目录的写入权限。

chmod 777 ./storage/framework/sessions

CSRF 令牌的工作原理是将值闪烁到您的会话中,然后将该值与在下一次请求中随表单提交的值进行比较。如果您的会话未设置,那么这将始终失败。

注意:有时仅清除浏览器 cookie 也可以;)

如果您使用的是 AJAX POST,请不要忘记添加以下内容

在你的头部:

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

在您的 javascript 部分中:

$.ajaxSetup({
     headers: {
       'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
     }
});

【讨论】:

  • 我已授予此会话文件夹的权限并删除浏览器缓存和 Cookie。但仍然遇到同样的问题
  • 你是否也检查过 session.php 文件中的值是否正确?还可以尝试使用此命令php artisan key:generate 重置您的应用程序密钥。
  • 我已经这样做了,也做了作曲家更新,但仍然遇到同样的问题
【解决方案2】:

这就是我解决问题的方法。

我正在使用 Session_driver=file(.env 文件)

清除会话数据: 删除 storage/frameworks/sessions/ 中的所有文件

Artisan 清除缓存: php artisan 缓存:清除

在 ubuntu 中重启 apache: sudo service apache2 重启

清除 chrome 或您正在使用的其他浏览器中的浏览器缓存

【讨论】:

    【解决方案3】:

    编辑此文件:

     vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php
    

    添加'POST'到

      protected function isReading($request)
        {
            return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS', 'POST']);
        }
    

    【讨论】:

      猜你喜欢
      • 2016-04-24
      • 1970-01-01
      • 2016-07-27
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      相关资源
      最近更新 更多