Цей допис суто технічний, і, як це водиться, написаний в дусі шпаргалки, тобто "для себе".
Я не девелопер, навіть кодер і не "погромізст", але в роботі devops-ів, іноді  виникають моменти, коли ти маєш бути всім, і одразу.
Якщо у вас виникла ситуація, коли ваш API запит на ваш бекенд Laravel 8 закінчується повідомленням "Сторінка застаріла" чи помилкою 419, якщо ви перебрали ручками весь код, залізли в гугл, і знайшли цей допис, сміливо читайте далі як це виправити.
Якщо все це не про вас, і ви просто зайшли сюди подивитись картинки - натисніть це посилання, картинки теж будуть.

Нумо розберімося з токеном CSRF!

Що таке в Laravel 8 той  CSRF захист (токен)? Чому він може викликати помилку 419?

XSRF/CSRF (Request Forgery) – вид вразливості, що дозволяє використовувати недоліки HTTP-протоколу. До речі, це одна з причин масового переходу на HTTPS-протокол. Зловмисники, або звичайна школота, провертає таку схему: посилання на шкідливий сайт встановлюється на сторінці, якій довіряє користувач, а далі, після переходу на шкідливу сторінку (іноді в фоновому режимі) виконується скрипт, який зберігає особисті дані користувача (паролі, платіжні дані і т.д.).
Або відправляється спам-повідомлення від особи користувача.
Чи змінюється доступ до облікового запису користувача, заради отримання повного контролю над ним.
Найбільш поширеними CSRF атаками є атаки з використанням тегу HTML <IMG>або Javascript об’єкту Іmage. Найчастіше, атакуючий додає необхідний код в електронний лист або на веб-сайті викладається заражена "картинка". Таким чином, після завантаження сторінки здійснюється запит і виконується шкідливий код.
За допомогою тегу <img>

Скриптова вставка

Javascript об'єкт Image

Як захищається від цього Laravel 8?


Кожна сторінка, за замовченням, "перевіряє" чи є у тієї сторони, яка робить запит, токен CSRF. Якщо його немає, POST запит закінчується помилкою.

Photo by krakenimages / Unsplash

Що робити, щоб виправити помилку токена, коли ви впевнені в авторстві запиту?

  • Не використовувати  в контролері для даного роуту (route) перевірку на авторизованність користувача, тобто не використовувати Middleware для цих роутів
  • Відключити перевірку CSRF токену для певних сторінок вашого бекенду Laravel 8

Як відключається перевірка CSRF?

В контроллері app/Http/Middleware/VerifyCsrfToken.php, який знаходиться  в теці app/http/providers/ знайдіть метод boot() і додайте ваші посилання до масиву $except

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'stripe/*',  // Ваші роути тут
        'http://example.com/foo/bar', //або у вигляді абсолютних URL
        'http://example.com/foo/*',
    ];
}


Обіцяні картинки, для тих, кому ця стаття занадто технічна і нецікава :)

Здибаємося.