Установка cookie web-сервером с параметром SameSite в момент ответа на AJAX запрос на другой домен как сделать или обойти ограничение?

Здравствуйте!
Есть 2 доена, например first.net и second.com.Требуется при обращении по AJAX с использованием JavaScript кода, который находится в HTML домена second.com, на домен first.net устанавливать для домена first.net cookie например test123 с значением test321 так чтобы она корректно передавалась на first.rnet при повторных AJAX-запросах(а так же не плохо понять аналогично и при загрузке картинок на страницы сайта second.com при их загрузке с сайта first.net). И в особенности требуется чтобы cookie корректно передавалась в современном браузере Firefox(текущая версия которого 128.0.2). Если есть отличия при использовании в других браузерах, было бы не плохо понять какие именно.

Если что про SameSite: None я прочитал, использую его и это не приводит к должному результату, как я понял связано это может быть с тем, что Firefox предположительно перестал должным образом обрабатывать этот параметр и теперь в не зависимости от того в какое значение установил этот параметр web-сервер в заголовке set-cookie в любом случаи Firefox установит значение параметра SameSite в Lax. Знаю что можно переопределить такое поведение параметром в about:config браузера, такой вариант не подходит, поскольку предполагается использование с стороны обычных пользователей, у которых этот параметр установлен стандартно.

Так же с параметром SameSite=None я как и положено использую параметр Secure(который означает что cookie должна передаваться только по HTTPS).

Если это имеет значение при тестировании использовались домены 2-ого уровня и на них валидные не просроченные SSL, само собой страница сайта второго домена открывается по HTTPS и по HTTPS выполняется AJAX-запрос к сайту на первом домене.

Сейчас php скрипт который обрабатывает AJAX запросы от second.com на first.net выглядит так(и как уже написал выше cookie при повторных AJAX-запросах на first.net не передаётся):

header("Access-Control-Allow-Origin: *");//Разрешаем cros-доменные запросы к php-скрипту
header("set-cookie: test123=test321; path=/; expires=Thu, 01-Jan-2035 00:05:00 GMT; SameSite=None; HttpOnly; Secure");
echo "test";


Знаю что есть такой вариант решения: на second.com в момент необходимости получения cookie с сайта first.net генерируется токен, его часть например по межсерверному API передаётся на first.net а далее через HTTP-переадресацию пользователь сайта перебрасывается на специальный скрипт first.net где используются cookie последнего домена абсолютно легально для идентификации пользователя, далее например если cookie есть опять же, как вариант, по межсерверному API передаётся необходимая информация о пользователе на second.com и как вариант с тем же токеном опять же с использованием HTTP-переадресации пользователь возвращается на специальный скрипт second.com который устанавливает свою cookie соответствия пользователя и далее именно эта cookie уже и используется. При этом в планах найти более простой способ использования cookie при cros-доменных запросах и загрузке файлов.
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
Что бы куки передавались в запросе нужно использовать credentials: 'include'

А что бы прочитать ответ, нужно что бы сервер вернул правильные заголовки Access-Control-Allow-Credentials и Access-Control-Allow-Origin

https://developer.mozilla.org/en-US/docs/Web/API/F...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы