Я создаю SPA, которому необходимо пройти аутентификацию на бэкенде Laravel с помощью Sanctum. Я использую пакет stancl/tenancy для мультитенантности, где у каждого арендатора есть собственный поддомен. Однако при попытке получить файл cookie CSRF я получаю ошибки «Файл cookie отклонен из-за недействительного домена».
Настройка
- SPA работает на localhost:5500
- API Laravel с клиентом на foo.localhost:8000 (с использованием пакета stancl/tenancy)
- Использование Laravel Святилище для аутентификация
Код: Выделить всё
SESSION_DOMAIN=.localhost
SANCTUM_STATEFUL_DOMAINS=localhost:5500
При вызове конечной точки /sanctum/csrf-cookie я получаю следующие ошибки в консоли браузера:
Код: Выделить всё
Cookie “XSRF-TOKEN” has been rejected for invalid domain.
Cookie “appName_session” has been rejected for invalid domain.
Cookie “iYsowm5ibM4hJnHPEkQ8byJiJqqjr1IvSpFsV8P7” has been rejected for invalid domain.
Вот как я делаю запрос:
Код: Выделить всё
axios.defaults.withCredentials = true;
axios.defaults.withXSRFToken = true;
var baseUrl = 'http://foo.localhost:8000';
axios.get(`${baseUrl}/sanctum/csrf-cookie`, {
headers: {
'Accept': 'application/json'
}
})
.then((response) => {
console.log(response);
})
.catch(error => {
console.error('Failed to set CSRF cookie:', error);
});
Как правильно настроить файлы cookie Laravel Sanctum для работы со SPA на localhost:5500, когда API находится в субдомене клиента (foo .localhost:8000) с использованием пакета stancl/tenancy?
Дополнительная информация
- Версия Laravel: 11.x
- stancl/tenancy версия: 3.x
- Все выполняется локально для разработки
Что я пробовал
- Настройка других Значения SESSION_DOMAIN
- Настройка CORS в config/cors.php
- Проверка включения учетных данных в запрос на выборку
Подробнее здесь: https://stackoverflow.com/questions/793 ... -spa-setup
Мобильная версия