【问题标题】:Laravel 5 token mismatch exception in jquery ajaxjquery ajax中的Laravel 5令牌不匹配异常
【发布时间】:2016-06-25 04:08:00
【问题描述】:

我正在使用带有 Jquery ajax 的 Laravel 5 开发应用程序。我在视图中有一个选项卡面板。单击选项卡按钮时它正在加载初始表单。它使用 jquery ejax 加载没有任何问题。之后用户可以在表单中输入数据,当点击更新按钮时,数据应该使用 jquery ajax 保存到数据库中。基本上不需要刷新页面。

虽然以前的 ajax 表单加载工作,当单击此按钮时,页面刷新并显示令牌不匹配异常。我也包含了 csrf 令牌。不知道是什么原因。我已将 csrf 令牌作为元内容包含在内像这样的价值,

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

而在 jquery ajax 代码中,得到这样的值。

var CSRF_TOKEN=$('meta[name="csrf-token"]').attr('content');

以下是 Laravel 堆栈跟踪,

TokenMismatchException in compiled.php line 2440:

in compiled.php line 2440
at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 17
at VerifyCsrfToken->handle(object(Request), object(Closure)) in compiled.php line 8944
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 12083
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in compiled.php line 8944
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 10785
at StartSession->handle(object(Request), object(Closure)) in compiled.php line 8944
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 11789
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in compiled.php line 8944
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 11738
at EncryptCookies->handle(object(Request), object(Closure)) in compiled.php line 8944
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 2478
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in compiled.php line 8944
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 8935
at Pipeline->then(object(Closure)) in compiled.php line 1891
at Kernel->sendRequestThroughRouter(object(Request)) in compiled.php line 1880
at Kernel->handle(object(Request)) in index.php line 53

【问题讨论】:

  • 你能发布你的 ajax 邮政编码吗?有时缺少某些代码行会导致该错误。
  • 实际上我的其他用于加载配置文件信息的 ajax 代码工作正常。所以我复制了相同的代码并根据此要求对其进行了编辑。无论如何我会在这里发布代码。

标签: laravel laravel-5


【解决方案1】:

php artisan clear-compiled

通过访问 ajax 请求中的 {{csrf_token()}} 将 csrf_token 嵌入到请求中。

【讨论】:

    【解决方案2】:
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
        }
    });
    

    在文档中。

    https://laravel.com/docs/5.2/routing#csrf-x-csrf-token

    【讨论】:

    • 感谢您的代码。但我之前尝试过,但没有成功。对于此代码,即使第一个表单也无法加载。
    猜你喜欢
    • 2017-05-27
    • 2017-05-02
    • 2016-12-06
    • 1970-01-01
    • 2017-10-24
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多