当我更改项目文件夹时 ajax 删除在 Laravel 5 中发送的请求时出现令牌不匹配异常

Token Mismatch exception when ajax Delete request sent in Laravel 5 when I change project folder

我用Dropzone.js上传图片。 当我想删除图像时,我向图像控制器发送了 Ajax 删除请求。

        myDropzone.on("removedfile", function(file) {      
            console.log(file.name);
            console.log(uploadedImages[file.name]);
            var csrf = $('input[name=_token]').val();
            // var csrf = $('meta[name="_token"]').attr('content');
            console.log(csrf);
           var request = $.ajax({
                url: "/cms/image/"+uploadedImages[file.name],
                headers: {
                    'X-CSRF-Token': csrf ,
                    "Accept": "application/json"
                },
                type: "DELETE",
                data: {  "id": uploadedImages[file.name] },
                error: function(jqXHR, textStatus, errorThrown) {
                    // alert('HTTP Error: '+errorThrown+' | Error Message: '+textStatus);
                    console.log(errorThrown);
                },

在我的旧项目中,该方法已通过删除请求成功发送到 Controller。

但是我在其他项目中合并,我得到了错误。

TokenMismatchException in VerifyCsrfToken.php

我不明白为什么会出现这种异常。请解释一下。感谢并尊重所有极客。

默认laravel自带csrf token验证中间件。

解法:

您可以通过从 Http 文件夹的 kernel.php 中删除 csrf 令牌的中间件注册来禁用它。

protected $middleware = [
    'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
    'Illuminate\Cookie\Middleware\EncryptCookies',
    'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
    'Illuminate\Session\Middleware\StartSession',
    'Illuminate\View\Middleware\ShareErrorsFromSession',
  //'App\Http\Middleware\VerifyCsrfToken',
];

您可以尝试将token放在发送的数据中

data: {  
   "_token": "{{ csrf_token() }}",
   "id": uploadedImages[file.name] 
},

我遇到了同样的问题,但它与 CSFR 无关,这是因为文件大小大于 2MB..