Laravel 419 (неизвестный статус) - PullRequest
0 голосов
/ 22 февраля 2019

7 проект и VueJs2 Это мой код VueJs2

mounted: function() {
   if(this.edit != null)
   {
        var token = document.head.querySelector('meta[name="csrf-token"]');
        console.log(token);
        $.ajax({
            type:'POST',
            url: path+'get_voucher_data',
            data: [{'_token':token}],
            success:(data) => {
                console.log(data);
             }
        });
   }
}

, но у меня есть эта ошибка: enter image description here

POST http://localhost/test/public/get_voucher_data 419 (unknown status)

Кроме того, это мойкод лезвия:

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

Кто-нибудь знает, почему это происходит, и как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Laravel имеет промежуточное ПО под названием VerifyCsrfToken, которое включено по умолчанию.Он гарантирует, что все запросы POST имеют токен csrf.Эти токены гарантируют, что запрос отправляется только из нашего приложения, а не из каких-либо сторонних утилит или утилит для отправки форм.

Когда контроллер не получает _token в запросе, он выдает ошибку.

Похоже, вы пытаетесь отправить, но не по сути.Обновление к этому:

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

data: {
   _token : token 
},

В настоящее время вы следите, который неправильно отправляет токен:

data: [{'_token':token}]

Более простая конфигурация:

Вместо отправки_token в каждом ajax-запросе, вы можете установить jquery ajax:

$.ajaxSetup({
    data: {
        _token: $('meta[name="csrf-token"]').attr('content')
    }
});

Тогда каждый ajax-запрос будет автоматически иметь это, нет необходимости указывать его снова в каждом запросе ajax-данных.

0 голосов
/ 22 февраля 2019

Попробуйте поставить свой токен в шапку:

headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...