В настоящее время я разрабатываю приложение Laravel 11 с интерфейсом React и сталкиваюсь с постоянной ошибкой «несоответствие токена CSRF» при попытке зарегистрировать пользователя через API. Я попробовал несколько способов решения этой проблемы, но безуспешно.
Подробности:
В моем приложении React есть форма, которая отправляет регистрацию пользователя. данные в мой бэкэнд Laravel. Вот соответствующий код для моего компонента Register:
import React, { useState } from 'react';
import axios from 'axios';
export default function Register() {
const [formData, setFormData] = useState({
first_name: '',
last_name: '',
email: '',
password: '',
});
const handleChange = (e) => {
setFormData({
...formData,
[e.target.name]: e.target.value,
});
};
const handleSubmit = async (e) => {
e.preventDefault();
// Get CSRF token from the meta tag
const csrfTokenMeta = document.head.querySelector('meta[name="csrf-token"]').content;
if (csrfTokenMeta) {
console.log('CSRF Token:', csrfTokenMeta);
} else {
console.error('CSRF Token meta tag not found.');
}
try {
const response = await axios.post('http://localhost:8000/api/register', formData, {
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': csrfTokenMeta, // Include CSRF token
},
});
alert('User registered successfully!');
console.log(response.data);
} catch (error) {
console.error('Registration error:', error);
alert('Error registering user. Please try again.');
}
};
return (
{/* Form fields for first name, last name, email, and password */}
);
}
Проблема:
Когда я отправляю форму, я получаю следующую ошибку:
{message: "CSRF token mismatch.", exception: "Symfony\Component\HttpKernel\Exception\HttpException"}
Что я пробовал:
Проверка токена CSRF:
Я убедился, что токен CSRF правильно извлекается и отправляется заголовки запросов.
Конфигурация сеанса:
Проверено, что config/session.php настроен на использование файлового драйвера, а для Same_site установлено значение слабый.
Конфигурация CORS:
Обновлен файл config/cors.php, чтобы обеспечить включение конечной точки API:
'paths' => ['api/*'],
'allowed_origins' => ['*'],
Проверка сетевых запросов
Проверил сетевые запросы в инструментах разработчика браузера и подтвердил, что токен CSRF правильно отправляется в заголовках.
Кэш очищен
php artisan config:cache
php artisan route:cache
php artisan cache:clear
Инициализация токена CSRF
В моем app.blade.php я включил токен CSRF следующим образом:
Подробнее здесь: https://stackoverflow.com/questions/790 ... gistration
Ошибка несоответствия токена CSRF Laravel 11 при регистрации API ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1728572155
Anonymous
В настоящее время я разрабатываю приложение Laravel 11 с интерфейсом React и сталкиваюсь с постоянной ошибкой «несоответствие токена CSRF» при попытке зарегистрировать пользователя через API. Я попробовал несколько способов решения этой проблемы, но безуспешно.
Подробности:
В моем приложении React есть форма, которая отправляет регистрацию пользователя. данные в мой бэкэнд Laravel. Вот соответствующий код для моего компонента Register:
import React, { useState } from 'react';
import axios from 'axios';
export default function Register() {
const [formData, setFormData] = useState({
first_name: '',
last_name: '',
email: '',
password: '',
});
const handleChange = (e) => {
setFormData({
...formData,
[e.target.name]: e.target.value,
});
};
const handleSubmit = async (e) => {
e.preventDefault();
// Get CSRF token from the meta tag
const csrfTokenMeta = document.head.querySelector('meta[name="csrf-token"]').content;
if (csrfTokenMeta) {
console.log('CSRF Token:', csrfTokenMeta);
} else {
console.error('CSRF Token meta tag not found.');
}
try {
const response = await axios.post('http://localhost:8000/api/register', formData, {
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': csrfTokenMeta, // Include CSRF token
},
});
alert('User registered successfully!');
console.log(response.data);
} catch (error) {
console.error('Registration error:', error);
alert('Error registering user. Please try again.');
}
};
return (
{/* Form fields for first name, last name, email, and password */}
);
}
Проблема:
Когда я отправляю форму, я получаю следующую ошибку:
{message: "CSRF token mismatch.", exception: "Symfony\Component\HttpKernel\Exception\HttpException"}
Что я пробовал:
Проверка токена CSRF:
Я убедился, что токен CSRF правильно извлекается и отправляется заголовки запросов.
Конфигурация сеанса:
Проверено, что config/session.php настроен на использование файлового драйвера, а для Same_site установлено значение слабый.
Конфигурация CORS:
Обновлен файл config/cors.php, чтобы обеспечить включение конечной точки API:
'paths' => ['api/*'],
'allowed_origins' => ['*'],
Проверка сетевых запросов
Проверил сетевые запросы в инструментах разработчика браузера и подтвердил, что токен CSRF правильно отправляется в заголовках.
Кэш очищен
php artisan config:cache
php artisan route:cache
php artisan cache:clear
Инициализация токена CSRF
В моем app.blade.php я включил токен CSRF следующим образом:
Подробнее здесь: [url]https://stackoverflow.com/questions/79074965/laravel-11-csrf-token-mismatch-error-on-api-registration[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия