Ответ 1
Я уверен, что это связано с тем, что Safari является единственным браузером, который по умолчанию блокирует "сторонние файлы cookie и другие данные веб-сайта". На самом деле, эта проблема не должна быть исключена из Safari iOS, это также должно произойти с Safari на вашем OSX. Я уверен, что если это не произойдет в вашем MacBook, это потому, что в один прекрасный день вы изменили настройки по умолчанию "Конфиденциальность".
Вы можете попробовать это, открыть Safari, перейти к "настройкам" и под вкладкой "Pricacy" проверить, есть ли у вас опция: "Блокировать файлы cookie и другие данные веб-сайта" на "От третьих лиц и рекламодателей". Это первый и стандартный вариант в современных версиях Safari.
В вашем MacBook это будет выглядеть так:
И в iOS это будет выглядеть так:
Просто чтобы убедиться, что это действительно то, что вызывает вашу проблему: измените этот параметр на "Никогда", очистите кеш и попытайтесь воспроизвести эту проблему еще раз. Я вполне уверен, что вы не сможете воспроизвести его.
Теперь, если вы вернетесь к "Блокировать файлы cookie и другие данные веб-сайта: от третьих лиц и рекламодателей", и вы сначала очистите кеш, у вас снова будет эта проблема (с iOS или OSX). После того, как вы подтвердите, что это является причиной вашей проблемы, установите для этого параметра значение "От третьих лиц и рекламодателей", чтобы вы могли воспроизвести и решить проблему с настройками по умолчанию.
Не забывайте, что каждый раз, когда вы хотите повторно протестировать эту проблему, вам будет лучше очистить кэш Safary. В противном случае может случиться так, что Safari решит, что сайту, обслуживающему API, можно доверять, и вы не сможете воспроизвести проблему. Поэтому, чтобы быть уверенным, очистить кеш каждый раз, когда вы проверяете это.
Я считаю, что корень этой проблемы заключается в том, что Safari хочет убедиться, что пользователь имеет прямое взаимодействие со страницей, обслуживающей контент сторонней стороны, до того, как основная страница загрузит это содержимое.
Мне нужно будет узнать больше о вашем проекте, чтобы предложить "оптимальное" решение. Например: будет ли последнее приложение интегрировано в тот же домен, что и API? Потому что, если это произойдет, вы не должны иметь эту проблему, когда идете на производство. Я имею в виду, что если приложение, которое вы разрабатываете, будет размещено под: http://whatever.yourDomain.org
, и API будет частью этого же домена (yourDomain.org
), тогда вы не должны иметь эту проблему вообще в производстве.
С другой стороны, если вам нужно иметь API, размещенный в другом домене, тогда вам нужно будет найти способ "обмануть" Safari. Посмотрите на это:
И это:
Я надеюсь, что это поможет.