iframe не активен, если не получает взаимодействие с пользователем - PullRequest
0 голосов
/ 20 декабря 2018

Я работал над требованием, которое включает в себя выборку / манипулирование сайтом данных, хранящихся в другом домене.Казалось, нет другого способа, кроме как включить CORS на другом сервере, чтобы я мог получать и изменять данные из другого домена.Однако это вызвало некоторые проблемы с приложениями Office 365. Мне пришлось использовать другой подход.

Подход заключается в использовании postMessage для разговора со скрытым iframe (не очень хороший подход, но я былнастаивал на его использовании) на странице, которая работает на целевом домене.Исходная страница публикует сообщение вместе с информацией о вызове REST для скрытого iframe, который делает запросы от имени родительской страницы и использует postMessage для возврата результатов.

Все работает нормально, кромекогда сайт используется на iPhone.Оказалось, что размещение alert вызовов в скрипте, работающем внутри цели iframe, заставляет его работать, но удаление вида вызовов alert отключает цель iframe от совершения этих сетевых вызовов между источниками.

Моя теория заключается в том, что из-за безопасности мобильного Safari, чтобы совершать вызовы из разных источников из iframe, работающего в другом домене, пользователь должен дать свое согласие, по крайней мере, один раз взаимодействуя со встроенным iframe.Это звучит правильно?

1 Ответ

0 голосов
/ 09 августа 2019

Комментарий diodeus-james-macfarlane - самое близкое, что мы могли бы сделать, но если iframe был скрыт, у нас не было никакого способа поместить элемент управления для взаимодействия с пользователем, даже если этотолько для того, чтобы он работал.

К моему удивлению, отключение параметра на сайте SharePoint заставило его работать.Эта настройка была связана с совместимостью с мобильным представлением, и без этого iframe может отправлять HTTP-запросы, отправлять и получать сообщения на родительскую веб-страницу и с нее.

...