Как автоматически добавить X-CSRF-TOKEN с запросом jQuery ajax в Laravel

Как я могу автоматически добавить токен csrf с моими запросами ajax (GET или POST) моего приложения Laravel, не добавляя его вручную к каждому запросу.

Мой запрос ajax

   $.ajax({
      type:'post',
      url: "/email/unique",
      data: { "_token": "{{ csrf_token() }}", "email": email }
      success: function(data) {
        console.log(data);
      }
   });

person Prateek    schedule 08.12.2018    source источник


Ответы (1)


В Laravel значение метатега csrf-token по умолчанию регистрируется в HTTP-библиотеке Axios. Но если вы не используете эту библиотеку, вам потребуется вручную настроить это поведение для своего приложения.

Для этого сохраните токен в метатеге HTML.

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

Затем, как только вы создали метатег, вы можете указать библиотеке jQuery автоматически добавлять токен во все заголовки запроса.

Для этого добавьте код в файл resources/js/bootstrap.js для версии Laravel 5.7 и resources/assets/js/bootstrap.js для версии Laravel 5.6 и ниже.

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

Ajax без токена csrf, так как он будет добавлен автоматически

$.ajax({
      type:'post',
      url: "/email/unique",
      data: { "email": email }
      success: function(data) {
        console.log(data);
    }
 }); 
person Prateek    schedule 08.12.2018