Почему Laravel возвращает ошибку с кодом 419 при отправке запроса через XMLHttpRequest?

Как правильно отправить запрос с CSRF токеном при использовании XMLHttpRequest в JavaScript для избежания ошибки 419 в Laravel? В коде уже присутствует установка CSRF токена с помощью `xhr.setRequestHeader("X-CSRFToken", csrftoken)`, но несмотря на это, возникает ошибка 419.
  • 17 августа 2024 г. 17:04
Ответы на вопрос 2
Ошибка 419 в Laravel обычно возникает в случае недействительного или просроченного CSRF токена. Чтобы правильно отправить запрос с CSRF токеном при использовании XMLHttpRequest, нужно убедиться, что вы определили токен в мета-теге страницы или в заголовке запроса.

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

```javascript
// Получаем CSRF токен из мета-тега страницы
var csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content');

// Создаем новый XMLHttpRequest объект
var xhr = new XMLHttpRequest();
xhr.open('POST', 'ваш_адрес_запроса', true);

// Устанавливаем заголовок с CSRF токеном
xhr.setRequestHeader('X-CSRF-TOKEN', csrfToken);

// Устанавливаем заголовок 'Content-Type'
xhr.setRequestHeader('Content-Type', 'application/json');

// Отправляем запрос
xhr.send(JSON.stringify(data));
```

Убедитесь, что вы заменили `'ваш_адрес_запроса'` на адрес вашего запроса и `data` на данные, которые вы отправляете. Также проверьте, что мета-тег с CSRF токеном присутствует на вашей странице.

Если после этого все равно возникает ошибка 419, убедитесь, что CSRF middleware в вашем приложении Laravel настроен правильно и не блокирует запросы с правильным токеном.
https://laravel.com/docs/11.x/csrf#csrf-x-csrf-token 
"X-CSRFToken" неправильный заголовок.
И вообще, убедитесь, что let csrftoken = getCookie('XSRF-TOKEN'); получает значение.
Похожие вопросы