Буквально перед публикацией проекта, отвечаю себе (а может и другим, в том числе
dimonchik2013) на собственный вопрос. Когда я задавался этим вопросом, у меня физически не было возможности проверить свои предположения, поскольку на тот момент только продумывались разные нюансы. Сложность вопроса заключалась по большей части в том, что браузеры по-разному ведут себя со сторонними куки + личные настройки пользователей. И по сей день нет единого рецепта для 100% простановки куки при кросс-доменных запросах, хотя некоторые подвижки есть (но это отдельная тема).
Вопрос был решён комбинированием уже имеющихся практик решения данной проблемы, а именно так: на странице
first.com размещаем пустой и невидимый
iframe
, в него загружаем страницу с домена second.com, которая исполняет сценарий, создавая форму, с методом
POST
и action-адресом, по которому в ответ сервер выставит куки (разумеется, для
second.com, как в моем случае и было необходимо). После этого
iframe
средствами
postMessage
может "информировать" родительское окно, что все прошло гладко или что-то случилось в свою очередь родительское окно удалить этот
iframe
. Все браузеры с включёнными куки, но с разными установками на предмет принятия сторонних куки прекрасно справились с этим сценарием.
Хочу так же заметить: часто вижу (и даже на Хабре есть такой пример), что вместо формы для таких случаев используют еще одни вложенный
iframe
с адресом , по которому сервер выставит куки - не стоит этого делать, так как такой способ срабатывает не во всех браузерах, нужен именно
POST
запрос и именно на форму (особенно для Safari).
В моем случае таких разных
second.com должно быть 4, поэтому описанный выше сценарий запускается в цикле для каждого необходимого домена. В итоге весь процесс проходит параллельно для этих перечисляемых доменов. Задержки, связанные с временем загрузки контента в
iframe
, отправки форм и получения ответа в моем сценарии не имеют значения, но учитывая размер кода для создания и ее отправки вес там минимальный, остальное зависит от сети и скорости отдачи на сервере. В моем случае это не играет большой роли.