Код: Выделить всё
// Fetch CSRF token before making HTTP requests
const getCsrfToken = async () => {
const response = await axios.get("/sanctum/csrf-cookie");
return response;
};
const getCookie = (name) => {
const cookies = document.cookie.split("=");
return cookies[1];
};
const handleLogin = async (email, password) => {
try {
await getCsrfToken(); // Ensure CSRF token is fetched
// Now make the login request
const response = await axios.post(
"http://localhost:8000/login",
{
email,
password,
},
{
headers: {
"Content-Type": "application/json",
accept: "application/json",
"X-XSRF-TOKEN": getCookie("XSRF-TOKEN"), // Retrieve the CSRF token
},
withCredentials: true,
}
);
if (response.status === 200) {
checkAuth(); // Call checkAuth only if login was successful
}
} catch (error) {
console.error("Error during login:", error);
}
};
Код: Выделить всё
'paths' => ['*'],
'allowed_methods' => ['*'],
'allowed_origins' => [env('FRONTEND_URL', 'http://localhost:3000')],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => true,
Код: Выделить всё
APP_URL=http://localhost:8000
FRONTEND_URL=http://localhost:3000
SANCTUM_STATEFUL_DOMAINS=http://localhost:3000
SESSION_DOMAIN=localhost
Я ожидаю, что запрос на вход будет правильно аутентифицирован с использованием токена CSRF из файлов cookie.
Фактическое поведение:
Запрос завершается с кодом состояния 419, указывающим на несоответствие токена CSRF, несмотря на то, что XSRF-TOKEN и сеанс laravel присутствуют в файлах cookie.Фактическое поведение:
Запрос завершается с кодом состояния 419, что указывает на несоответствие токена CSRF.
Подробнее здесь: https://stackoverflow.com/questions/790 ... in-cookies