Файл cookie, отправляемый API с другого домена, не установлен

#php #laravel #cookies #csrf

Вопрос:

Итак, мой API(laravel), например, работает https://api.example.com , а на стороне клиента работает мой сайт http://127.0.0.1:3000 . API отправляет следующий файл cookie,

set-cookie: XSRF-TOKEN=eyJpdiI6IkVRSjcyYzBoVzRTazQ4RWJjK0JSd2c9PSIsInZhbHVlIjoiT20yb3AwZk1HemloaUl2MFZZdkUyUVM3Z3pXc3B0QXpiUEZPUEJIWElJYjRHamtlZ3d5NU5yb3doWmQ4ZXNBb1g0eTFiZXliRlFmWkN1SjVRMVFaM3pXK2x0MTMyK1MwTnp3cVZFSksvaVlJdGdLNGpKZXVrR3lITTRPU2VYNWgiLCJtYWMiOiI0MGU3NmEzYmI2NjY3MTkwNTNlMDQ2ZWRiNjVmNzdmYzA1MTMzOWE0NjA0YzAxYzBjZTczNzI4MDljOThhYTRmIn0=; expires=Wed, 30-Sep-2026 06:29:36 GMT; Max-Age=155520000; path=/; samesite=lax

Однако этот файл cookie не устанавливается браузером, так как он всегда пуст.

введите описание изображения здесь

Я делаю запрос следующим образом:

 axios.get("https://api.example.com/users")  

В чем может быть проблема?

Комментарии:

1. Может быть, вы установили файл cookie в api.example.com домен?

2. если бы какой-либо сайт мог устанавливать файлы cookie в другом домене, то интернет-безопасность была бы лихорадочной мечтой сумасшедшего.

3. Так что, я думаю SameSite , должен быть none @apokryfos, по крайней мере, в среде разработчиков?

4. Даже если SameSite это none так, файл cookie будет установлен для api.example.com домена. Он https://api.example.com не может устанавливать файлы cookie http://127.0.0.1:3000 и http://127.0.0.1:3000 не может считывать файлы cookie, установленные https://api.example.com . Если вы хотите поделиться токеном CSRF, вам нужно выполнить обычный запрос и поместить токен в тело ответа, где принимающий хост может затем сохранить его в файле cookie или локальном хранилище или где угодно. В этом случае будут отправлены любые файлы cookie, https://api.example.com установленные в соответствии с SameSite политикой as none .

5. @apokryfos Спасибо, это помогает.