Сделал как здесь:
https://codecourse.com/articles/the-complete-guide...
с одинаковыми доменами, но разными портами работает (только пришлось в cors.php добавить путь = '/', иначе после нажатия кнопки login preflight запрос проблемный был)
бэк:
laravel-sanctum-vue.test
фронт:
laravel-sanctum-vue.test:5173
Теперь хочу сделать так, чтобы работало с разными доменами.
бэк:
laravel-sanctum-vue.test (та же самая связка protocol + domain + port)
фронт:
changed-sanctum-vue.test:5173 (поменялся только домен)
это ведь также может быть полезно, если к существующему и опубликованному на vps бэку хочется подключиться локально (с localhost или (
https://local.{prod_domain}.test:5173, добавленный в hosts windows файл)
Но были разные проблемы с cookie, выяснил, что если same_site заголовок = lax, то обязательно должны быть одинаковые домены, поменять на Null нельзя, как минимум, google chrome конвертирует обратно в lax, поменял на 'none', но в таком случае браузер требует https,
vite на фронте сделал:
import mkcert from 'vite-plugin-mkcert'
server: {
host: 'changed-sanctum-vue.test',
https: true
}
+ в main.js:
axios.defaults.baseURL = '
https://laravel-sanctum-vue.test';
axios.defaults.withCredentials = true;
axios.defaults.withXSRFToken = true;
бэк тоже перевёл на https (в laravel herd есть кнопка).
И добавил в env:
SESSION_SECURE_COOKIE = true
SESSION_SAME_SITE= none
и SANCTUM_STATEFUL_DOMAINS заменил на:
APP_URL=
https://laravel-sanctum-vue.test
SESSION_DOMAIN=
https://laravel-sanctum-vue.test
SANCTUM_STATEFUL_DOMAINS=
https://changed-sanctum-vue.test:5173
Отдельно сайты открываются:
фронт:
https://changed-sanctum-vue.test:5173/
бэк:
https://laravel-sanctum-vue.test/
Но при /login теперь 419 CSRF token mismatch.
Чатботы предлагали сделать
1) SESSION_DOMAIN =null
2) в AppServiceProvider
public function boot(): void
{
\URL::forceScheme('https');
}
3) в cors.php:
'paths' => ['*'],
но это ничего не изменило
https://laravel-sanctum-vue.test/sanctum/csrf-cookie запрос
https://laravel-sanctum-vue.test/login: